text:
Object-oriented programming
|Programming paradigms
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which are data structures that contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods. A distinguishing feature of objects is that an object's procedures can access and often modify the data fields of the object with which they are associated (objects have a notion of "this"). In object-oriented programming, computer programs are designed by making them out of objects that interact with one another.[1][2] There is significant diversity in object-oriented programming, but most popular languages are class-based, meaning that objects are instances of class (computer science)es, which typically also determines their type.
Many of the most widely used programming languages are multi-paradigm programming languages that support object-oriented programming to a greater or lesser degree, typically in combination with imperative, procedural programming. Significant object-oriented languages include C++, Objective-C, Smalltalk, Delphi, Java, C#, Perl, Python, Ruby and PHP.
- Overview 1
- History 2
Fundamental features and concepts 3
- Decoupling 3.1
- Additional features 4
- Formal semantics 5
OOP languages 6
- OOP in dynamic languages 6.1
Design patterns 7
- Inheritance and behavioral subtyping 7.1
- Gang of Four design patterns 7.2
- Object-orientation and databases 7.3
- Real-world modeling and relationships 7.4
- OOP and control flow 7.5
- Responsibility- vs. data-driven design 7.6
- Criticism 8
- See also 9
- References 10
- Further reading 11
- External links 12
Object-oriented programming attempts to provide a model for programming based on objects.[3] Object-oriented programming integrates code and data using the concept of an "object". An object is an abstract data type with the addition of polymorphism and inheritance. An object has both state (data) and behavior (code).
Objects sometimes correspond to things found in the real world. For example, a graphics program may have objects such as "circle," "square," "menu." An online shopping system will have objects such as "shopping cart," "customer," and "product." The shopping system will support behaviors such as "place order," "make payment," and "offer discount."
Objects are designed in class hierarchies. For example, with the shopping system there might be high level classes such as "electronics product," "kitchen product," and "book." There may be further refinements for example under "electronic products": "CD Player," "DVD player," etc. These classes and subclasses correspond to sets and subsets in mathematical logic. Rather than utilizing database tables and programming subroutines, the developer utilizes objects the user may be more familiar with: objects from their application domain.[4]
Object orientation uses encapsulation and information hiding. Object-orientation essentially merges abstract data types with structured programming and divides systems into modular objects which own their own data and are responsible for their own behavior. This feature is known as encapsulation. With encapsulation, the data for two objects are divided so that changes to one object cannot affect the other. Note that all this relies on the various languages being used appropriately, which, of course, is never certain. Object-orientation is not a software silver bullet.[5]
The object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the system. Instead, the data is accessed by calling specially written functions, called methods, which are bundled with the data. These act as the intermediaries for retrieving or modifying the data they control. The programming construct that combines data with a set of methods for accessing and managing that data is called an object. The practice of using subroutines to examine or modify certain kinds of data was also used in non-OOP modular programming, well before the widespread use of object-oriented programming.
Defining software as modular components that support inheritance is meant to make it easy both to re-use existing components and to extend components as needed by defining new subclasses with specialized behaviors. This goal of being easy to both maintain and reuse is known in the object-oriented paradigm as the "open/closed principle." A module is open if it supports extension (e.g. can easily modify behavior, add new properties, provide default values, etc.). A module is closed if it has a well defined stable interface that all other modules must use and that limits the interaction and potential errors that can be introduced into one module by changes in another.[6]
Terminology invoking "objects" and "oriented" in the modern sense of object-oriented programming made its first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes);[7][8] Alan Kay was later to cite a detailed understanding of LISP internals as a strong influence on his thinking in 1966.[9] Another early MIT example was Sketchpad created by Ivan Sutherland in 1960–61; in the glossary of the 1963 technical report based on his dissertation about Sketchpad, Sutherland defined notions of "object" and "instance" (with the class concept covered by "master" or "definition"), albeit specialized to graphical interaction.[10] Also, an MIT ALGOL version, AED-0, linked data structures ("plexes", in that dialect) directly with procedures, prefiguring what were later termed "messages", "methods", and "member functions".[11][12]
The formal programming concept of objects was introduced in the 1960s in Simula 67, a major revision of Simula I, a programming language designed for discrete event simulation, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo.[13] Simula 67 was influenced by SIMSCRIPT and C.A.R. "Tony" Hoare's proposed "record classes".[11][14] Simula introduced the notion of classes and instances or objects (as well as subclasses, virtual methods, coroutines, and discrete event simulation) as part of an explicit programming paradigm. The language also used automatic garbage collection that had been invented earlier for the functional programming language Lisp. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. The ideas of Simula 67 influenced many later languages, including Smalltalk, derivatives of LISP (CLOS), Object Pascal, and C++.
The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67.[15] Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte Magazine.
In the 1970s, Kay's Smalltalk work had influenced the Lisp community to incorporate object-based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (such as LOOPS and Flavors introducing multiple inheritance and mixins) eventually led to the Common Lisp Object System, which integrates functional programming and object-oriented programming and allows extension via a Meta-object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.
In 1985, Bertrand Meyer produced the first design of the Eiffel language. Focused on software quality, Eiffel is among the purely object-oriented languages, but differs in the sense that the language itself is not only a programming language, but a notation supporting the entire software lifecycle. Meyer described the Eiffel software development method, based on a small number of key ideas from software engineering and computer science, in Object-Oriented Software Construction. Essential to the quality focus of Eiffel is Meyer's reliability mechanism, Design by Contract, which is an integral part of both the method and language.
Object-oriented programming developed as the dominant programming methodology in the early and mid 1990s when programming languages supporting the techniques became widely available. These included Visual FoxPro 3.0,[16][17][18] C++, and Delphi. Its dominance was further enhanced by the rising popularity of graphical user interfaces, which rely heavily upon object-oriented programming techniques. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP).
At ETH Zürich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such.
Object-oriented features have been added to many previously existing languages, including Ada, BASIC, Fortran, Pascal, and COBOL. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code.
More recently, a number of languages have emerged that are primarily object-oriented, but that are also compatible with procedural methodology. Two such languages are Python and Ruby. Probably the most commercially-important recent object-oriented languages are Java, developed by Sun Microsystems, as well as C# and Visual Basic.NET (VB.NET), both designed for Microsoft's .NET platform. Each of these two frameworks shows, in its own way, the benefit of using OOP by creating an abstraction from implementation. VB.NET and C# support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Developers usually compile Java to bytecode, allowing Java to run on any operating system for which a Java virtual machine is available.
Fundamental features and concepts
A survey by Deborah J. Armstrong of nearly 40 years of computing literature identified a number of fundamental concepts found in the large majority of definitions of OOP.[19]
Not all of these concepts appear in all object-oriented programming languages. For example, object-oriented programming that uses classes is sometimes called class-based programming, while prototype-based programming does not typically use classes. As a result, a significantly different yet analogous terminology is used to define the concepts of object and instance.
Benjamin C. Pierce and some other researchers view any attempt to distill OOP to a minimal set of features as futile. He nonetheless identifies fundamental features that support the OOP programming style in most object-oriented languages:[20]
- Dynamic dispatch – when a method is invoked on an object, the object itself determines what code gets executed by looking up the method at run time in a table associated with the object. This feature distinguishes an object from an abstract data type (or module), which has a fixed (static) implementation of the operations for all instances. It is a programming methodology that gives modular component development while at the same time being very efficient.
- Encapsulation (or multi-methods, in which case the state is kept separate)
- Subtype polymorphism
- Object inheritance (or delegation)
Open recursion – a special variable (syntactically it may be a keyword), usually called
self, that allows a method body to invoke another method body of the same object. This variable is late-bound; it allows a method defined in one class to invoke another method that is defined later, in some subclass thereof.
Similarly, in his 2003 book, Concepts in programming languages, John C. Mitchell identifies four main features: dynamic dispatch, abstraction, subtype polymorphism, and inheritance.[21] Michael Lee Scott in Programming Language Pragmatics considers only encapsulation, inheritance, and dynamic dispatch.[22]
Additional concepts used in object-oriented programming include:
- Classes of objects (object constructors)
- Instances of classes (objects, which have been constructed via a class)
- Methods which act on the attached objects.
- Message passing
- Abstraction
Decoupling refers to careful controls that separate code modules from particular use cases, which increases code re-usability. A common use of decoupling is to mainly decouple the encapsulation (see bridge pattern and adapter pattern) – for example, using a method interface that an encapsulated object must satisfy, as opposed to using the object's class.
Additional features
- Encapsulation enforces modularity
- Encapsulation refers to the creation of self-contained modules that bind processing functions to the data. These user-defined data types are called "classes", and one instance of a class is an "object". For example, in a payroll system, a class could be Manager, and Pat and Jan could be two instances (two objects) of the Manager class. Encapsulation ensures good code modularity, which keeps routines separate and less prone to conflict with each other.
- Inheritance passes "knowledge" down
- Classes are created in hierarchies, and inheritance lets the structure and methods in one class pass down the hierarchy. That means less programming is required when adding functions to complex systems. If a step is added at the bottom of a hierarchy, only the processing and data associated with that unique step must be added. Everything else above that step is inherited. The ability to reuse existing objects is considered a major advantage of object technology.
- Polymorphism takes any shape
- Object-oriented programming lets programmers create procedures for objects whose exact type is not known until runtime. For example, a screen cursor may change its shape from an arrow to a line depending on the program mode. The routine to move the cursor on screen in response to mouse movement can be written for "cursor", and polymorphism lets that cursor take simulating system behaviour.
Formal semantics
Objects are the run-time entities in an object-oriented system. They may represent a person, a place, a bank account, a table of data, or any item that the program has to handle.
There have been several attempts at formalizing the concepts used in object-oriented programming. The following concepts and constructs have been used as interpretations of OOP concepts:
- co algebraic data types[23]
- abstract data types (which have existential types) allow the definition of modules but these do not support dynamic dispatch
- recursive types
- encapsulated state
- inheritance
- records are basis for understanding objects if function literals can be stored in fields (like in functional programming languages), but the actual calculi need be considerably more complex to incorporate essential features of OOP. Several extensions of System F<: that deal with mutable objects have been studied;[24] these allow both subtype polymorphism and parametric polymorphism (generics)
Attempts to find a consensus definition or theory behind objects have not proven very successful (however, see Abadi & Cardelli, A Theory of Objects[24] for formal definitions of many OOP concepts and constructs), and often diverge widely. For example, some definitions focus on mental activities, and some on program structuring. One of the simpler definitions is that OOP is the act of using "map" data structures or arrays that can contain functions and pointers to other maps, all with some syntactic and scoping sugar on top. Inheritance can be performed by cloning the maps (sometimes called "prototyping").
OOP languages
Simula (1967) is generally accepted as the first language with the primary features of an object-oriented language. It was created for making simulation programs, in which what came to be called objects were the most important information representation. Smalltalk (1972 to 1980) is arguably the canonical example, and the one with which much of the theory of object-oriented programming was developed. Concerning the degree of object orientation, the following distinctions can be made:
- Languages called "pure" OO languages, because everything in them is treated consistently as an object, from primitives such as characters and punctuation, all the way up to whole classes, prototypes, blocks, modules, etc. They were designed specifically to facilitate, even enforce, OO methods. Examples: Eiffel, Emerald,[25] JADE, Obix, Ruby, Python, Scala, Smalltalk, Self.
- Languages designed mainly for OO programming, but with some procedural elements. Examples: Delphi/Object Pascal, C++, Java, C#, VB.NET.
- Languages that are historically procedural languages, but have been extended with some OO features. Examples: Pascal, Visual Basic (derived from BASIC), MATLAB, Fortran, Perl, COBOL 2002, PHP, ABAP, Ada 95.
- Languages with most of the features of objects (classes, methods, inheritance), but in a distinctly original form. Examples: Oberon (Oberon-1 or Oberon-2).
- Languages with abstract data type support, but not all features of object-orientation, sometimes called object-based languages. Examples: Modula-2, Pliant, CLU.
- Chameleon languages that support multiple paradigms, including OO. Tcl stands out among these for TclOO, a hybrid object system that supports both prototype-based programming and class-based OO.
OOP in dynamic languages
In recent years, object-oriented programming has become especially popular in dynamic programming languages. Python, Ruby and Groovy are dynamic languages built on OOP principles, while Perl and PHP have been adding object-oriented features since Perl 5 and PHP 4, and ColdFusion since version 6.
The Document Object Model of HTML, XHTML, and XML documents on the Internet has bindings to the popular JavaScript/ECMAScript language. JavaScript is perhaps the best known prototype-based programming language, which employs cloning from prototypes rather than inheriting from a class (contrast to class-based programming). Another scripting language that takes this approach is Lua. Before ActionScript 2.0 (a partial superset of the ECMA-262 R3, otherwise known as ECMAScript) only a prototype-based object model was supported.
Design patterns
Challenges of object-oriented design are addressed by several methodologies. Most common is known as the design patterns codified by Gamma et al.. More broadly, the term "design patterns" can be used to refer to any general, repeatable solution to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.
Inheritance and behavioral subtyping
It is intuitive to assume that inheritance creates a semantic "is a" relationship, and thus to infer that objects instantiated from subclasses can always be safely used instead of those instantiated from the superclass. This intuition is unfortunately false in most OOP languages, in particular in all those that allow mutable objects. Subtype polymorphism as enforced by the type checker in OOP languages (with mutable objects) cannot guarantee behavioral subtyping in any context. Behavioral subtyping is undecidable in general, so it cannot be implemented by a program (compiler). Class or object hierarchies must be carefully designed, considering possible incorrect uses that cannot be detected syntactically. This issue is known as the Liskov substitution principle.
Gang of Four design patterns
Design Patterns: Elements of Reusable Object-Oriented Software is an influential book published in 1995 by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, often referred to humorously as the "Gang of Four". Along with exploring the capabilities and pitfalls of object-oriented programming, it describes 23 common programming problems and patterns for solving them. As of April 2007, the book was in its 36th printing.
The book describes the following patterns:
- Creational patterns (5): Factory method pattern, Abstract factory pattern, Singleton pattern, Builder pattern, Prototype pattern
- Structural patterns (7): Adapter pattern, Bridge pattern, Composite pattern, Decorator pattern, Facade pattern, Flyweight pattern, Proxy pattern
- Behavioral patterns (11): Chain-of-responsibility pattern, Command pattern, Interpreter pattern, Iterator pattern, Mediator pattern, Memento pattern, Observer pattern, State pattern, Strategy pattern, Template method pattern, Visitor pattern
Object-orientation and databases
Both object-oriented programming and relational database management systems (RDBMSs) are extremely common in software today. Since relational databases don't store objects directly (though some RDBMSs have object-oriented features to approximate this), there is a general need to bridge the two worlds. The problem of bridging object-oriented programming accesses and data patterns with relational databases is known as object-relational impedance mismatch. There are a number of approaches to cope with this problem, but no general solution without downsides.[26] One of the most common approaches is object-relational mapping, as found in libraries like Java Data Objects and Ruby on Rails' ActiveRecord.
There are also object databases that can be used to replace RDBMSs, but these have not been as technically and commercially successful as RDBMSs.
Real-world modeling and relationships
OOP can be used to associate real-world objects and processes with digital counterparts. However, not everyone agrees that OOP facilitates direct real-world mapping (see Criticism section) or that real-world mapping is even a worthy goal; Bertrand Meyer argues in Object-Oriented Software Construction[27] that a program is not a model of the world but a model of some part of the world; "Reality is a cousin twice removed". At the same time, some principal limitations of OOP had been noted.[28] For example, the circle-ellipse problem is difficult to handle using OOP's concept of inheritance.
However, Niklaus Wirth (who popularized the adage now known as Wirth's law: "Software is getting slower more rapidly than hardware becomes faster") said of OOP in his paper, "Good Ideas through the Looking Glass", "This paradigm closely reflects the structure of systems 'in the real world', and it is therefore well suited to model complex systems with complex behaviours" (contrast KISS principle).
Steve Yegge and others noted that natural languages lack the OOP approach of strictly prioritizing things (objects/nouns) before actions (methods/verbs).[29] This problem may cause OOP to suffer more convoluted solutions than procedural programming.[30]
OOP and control flow
OOP was developed to increase the reusability and maintainability of source code.[31] Transparent representation of the control flow had no priority and was meant to be handled by a compiler. With the increasing relevance of parallel hardware and multithreaded coding, developing transparent control flow becomes more important, something hard to achieve with OOP.[32][33][34][35]
Responsibility- vs. data-driven design
Responsibility-driven design defines classes in terms of a contract, that is, a class should be defined around a responsibility and the information that it shares. This is contrasted by Wirfs-Brock and Wilkerson with data-driven design, where classes are defined around the data-structures that must be held. The authors hold that responsibility-driven design is preferable.
The OOP paradigm has been criticised for a number of reasons, including not meeting its stated goals of reusability and modularity,[36][37] and for overemphasizing one aspect of software design and modeling (data/objects) at the expense of other important aspects (computation/algorithms).[38][39]
Luca Cardelli has claimed that OOP code is "intrinsically less efficient" than procedural code, that OOP can take longer to compile, and that OOP languages have "extremely poor modularity properties with respect to class extension and modification", and tend to be extremely complex.[36] The latter point is reiterated by Joe Armstrong, the principal inventor of Erlang, who is quoted as saying:[37]
The problem with object-oriented languages is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
A study by Potok et al. has shown no significant difference in productivity between OOP and procedural approaches.[40]
Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP;[41] however, Date and Darwen have proposed a theoretical foundation on OOP that uses OOP as a kind of customizable type system to support RDBMS.[42]
In an article Lawrence Krubner claimed that compared to other languages (lisps, functional languages, etc) OOP languages have no unique strengths, and inflict a heavy burden of unneeded complexity.[43]
Alexander Stepanov compares object orientation unfavourably to multimethods:[38]
I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras — families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting — saying that everything is an object is saying nothing at all.
Paul Graham has suggested that OOP's popularity within large companies is due to "large (and frequently changing) groups of mediocre programmers." According to Graham, the discipline imposed by OOP prevents any one programmer from "doing too much damage."[44]
Steve Yegge noted that, as opposed to functional programming:[45]
Object Oriented Programming puts the Nouns first and foremost. Why would you go to such lengths to put one part of speech on a pedestal? Why should one kind of concept take precedence over another? It's not as if OOP has suddenly made verbs less important in the way we actually think. It's a strangely skewed perspective.
Rich Hickey, creator of Clojure, described object systems as overly simplistic models of the real world. He emphasized the inability of OOP to model time properly, which is getting increasingly problematic as software systems become more concurrent.[39]
Eric S. Raymond, a Unix programmer and open-source software advocate, has been critical of claims that present object-oriented programming as the "One True Solution," and has written that object-oriented programming languages tend to encourage thickly-layered programs that destroy transparency.[46] Raymond contrasts this to the approach taken with Unix and the C programming language.[47]
See also
- Aspect-oriented programming
- Comparison of programming languages (object-oriented programming)
- Comparison of programming paradigms
- Component-based software engineering
- Concurrent object-oriented programming
- Constructor (object-oriented programming)
- Constructor overloading
- Design by contract
- Interface-based programming
- Interface description language
- Jeroo
- Lepus3
- Modular programming
- Object association
- Object database
- Object modeling language
- Object-oriented analysis and design
- Object-relational impedance mismatch (and The Third Manifesto)
- Object-relational mapping
- Procedural programming
- Refactoring
- Structured programming
- Visual FoxPro
- ZZT-oop
- ^ Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems. pp. 313–343.
- ^ Lewis, John; Loftus, William (2008). Java Software Solutions Foundations of Programming Design 6th ed. Pearson Education Inc. , section 1.6 "Object-Oriented Programming"
- ^ Booch, Grady (1986). Software Engineering with Ada. Addison Wesley. p. 220.
- ^ Jacobsen, Ivar; Magnus Christerson; Patrik Jonsson; Gunnar Overgaard (1992). Object Oriented Software Engineering. Addison-Wesley ACM Press. pp. 43–69.
- ^
- ^ Meyer, Bertrand (1988). Object-Oriented Software Construction. Cambridge: Prentice Hall International Series in Computer Science. p. 23.
- ^ McCarthy, J.;
- ^
- ^ """Dr. Alan Kay on the Meaning of "Object-Oriented Programming. 2003. Retrieved 11 February 2010.
- ^ Sutherland, I. E. (30 January 1963). "Sketchpad: A Man-Machine Graphical Communication System" (PDF). Technical Report No. 296, Lincoln Laboratory, Massachusetts Institute of Technology via Defense Technical Information Center (stinet.dtic.mil). Retrieved 3 November 2007.
- ^ a b The Development of the Simula Languages, Kristen Nygaard, Ole-Johan Dahl, p.254 Uni-kl.ac.at
- ^ Ross, Doug. "The first software engineering language". LCS/AI Lab Timeline:. MIT Computer Science and Artificial Intelligence Laboratory. Retrieved 13 May 2010.
- ^ Holmevik, Jan Rune (1994). "Compiling Simula: A historical study of technological genesis". IEEE Annals of the History of Computing 16 (4): 25–37.
- ^
- ^ Kay, Alan. "The Early History of Smalltalk". Retrieved 13 September 2007.
- ^ 1995 (June) Visual FoxPro 3.0, FoxPro evolves from a procedural language to an object-oriented language. Visual FoxPro 3.0 introduces a database container, seamless client/server capabilities, support for ActiveX technologies, and OLE Automation and null support. Summary of Fox releases
- ^ FoxPro History web site: Foxprohistory.org
- ^ 1995 Reviewers Guide to Visual FoxPro 3.0: DFpug.de
- ^ Armstrong, The Quarks of Object-Oriented Development. In descending order of popularity, the "quarks" are: Inheritance, Object, Class, Encapsulation, Method, Message Passing, Polymorphism, Abstraction
- ^ Pierce, Benjamin (2002). , section 18.1 "What is Object-Oriented Programming?"
- ^ John C. Mitchell, Concepts in programming languages, Cambridge University Press, 2003, ISBN 0-521-78098-5, p.278
- ^ Michael Lee Scott, Programming language pragmatics, Edition 2, Morgan Kaufmann, 2006, ISBN 0-12-633951-1, p. 470 vikas
- ^ Poll, Erik. "Subtyping and Inheritance for Categorical Datatypes". Retrieved 5 June 2011.
- ^ a b
- ^ "The Emerald Programming Language". 2011-02-26.
- ^ Neward, Ted (26 June 2006). "The Vietnam of Computer Science". Interoperability Happens. Retrieved 2 June 2010.
- ^ Meyer, Second Edition, p. 230
- ^ M.Trofimov, OOOP - The Third "O" Solution: Open OOP. First Class, OMG, 1993, Vol. 3, issue 3, p.14.
- ^ Yegge, Steve (30 March 2006). "Execution in the Kingdom of Nouns". steve-yegge.blogspot.com. Retrieved 3 July 2010.
- ^ Boronczyk, Timothy (11 June 2009). "What's Wrong with OOP". zaemis.blogspot.com. Retrieved 3 July 2010.
- ^ Ambler, Scott (1 January 1998). "A Realistic Look at Object-Oriented Reuse". www.drdobbs.com. Retrieved 4 July 2010.
- ^ Shelly, Asaf (22 August 2008). "Flaws of Object Oriented Modeling". Intel Software Network. Retrieved 4 July 2010.
- ^ James, Justin (1 October 2007). "Multithreading is a verb not a noun". techrepublic.com. Retrieved 4 July 2010.
- ^ Shelly, Asaf (22 August 2008). "HOW TO: Multicore Programming (Multiprocessing) Visual C++ Class Design Guidelines, Member Functions". support.microsoft.com. Retrieved 4 July 2010.
- ^
- ^ a b
- ^ a b Armstrong, Joe. In Coders at Work: Reflections on the Craft of Programming. Peter Seibel, ed. Codersatwork.com, Accessed 13 November 2009.
- ^ a b
- ^ a b Rich Hickey, JVM Languages Summit 2009 keynote, Are We There Yet? November 2009.
- ^ Potok, Thomas; Mladen Vouk; Andy Rindos (1999). "Productivity Analysis of Object-Oriented Software Developed in a Commercial Environment". Software – Practice and Experience 29 (10): 833–847.
- ^ C. J. Date, Introduction to Database Systems, 6th-ed., Page 650
- ^ C. J. Date, Hugh Darwen. Foundation for Future Database Systems: The Third Manifesto (2nd Edition)
- ^ Krubner, Lawrence. "Object Oriented Programming is an expensive disaster which must end". smashcompany.com. Retrieved 14 October 2014.
- ^
- ^ Stevey's Blog Rants
- ^ Eric S. Raymond (2003). "The Art of Unix Programming: Unix and Object-Oriented Languages". Retrieved 2014-08-06.
- ^ Eric S. Raymond (2003). "The Art of Unix Programming: Unix and Object-Oriented Languages". Retrieved 2014-08-06.
Further reading
- Armstrong, Deborah J. (February 2006). "The Quarks of Object-Oriented Development". Communications of the ACM 49 (2): 123–128.
- Eeles, Peter;
- Pecinovsky, Rudolf (2013). OOP - Learn Object Oriented Thinking & Programming. Bruckner Publishing.
- Schach, Stephen (2006). Object-Oriented and Classical Software Engineering, Seventh Edition.
- Schreiner, Axel-Tobias (1993). Object oriented programming with ANSI-C. Hanser.
- Taylor, David A. (1992). Object-Oriented Information Systems - Planning and Implementation. John Wiley & Sons.
- Weisfeld, Matt (2009). The Object-Oriented Thought Process, Third Edition.
External links
- Object-oriented programming at DMOZ
- Introduction to Object Oriented Programming Concepts (OOP) and More by L.W.C. Nirosh
- Discussion about the flaws of OOD
- OOP Concepts (Java Tutorials)
- Intel blog - killing OOP
- intelblog
- Articles containing potentially dated statements from 2006
- All articles containing potentially dated statements
- Articles with excessive see also sections from April 2014
- CS1 maint: display-authors
- Pages containing cite templates with deprecated parameters
- Articles with DMOZ links
- Use dmy dates from September 2010
- Object-oriented programming
- Programming paradigms


text:
It took less than three minutes Monday for a district court judge to issue a $200,000 restitution order in connection to the 2012 Roatcap fire.
Appearing before Judge Todd Plewe on Monday, June 30, the defendant, Roger Stratton, 55, of Dolores did not contest the restitution amount. More than half the money, $109,000, was awarded to the U.S. Forest Service.
Last fall, Stratton pleaded guilty to starting a wildfire that scorched some 400 acres near Dolores on Oct. 24, 2012. He is currently on probation, which prohibits him from having any outdoor fire on his property.
In addition to the U.S. Forest Service, court records reveal the State of Colorado was awarded restitution of more than $50,000; Bureau of Land Management, nearly $12,000; and Empire Electric, some $9,000. The remaining restitution was divided among three insurance companies and six private property owners.
Solely dependent on Social Security benefits, Stratton isn't expected to pay off the total restitution any time soon, according to his public defender.
At his plea hearing in November, Plewe placed Stratton on five years of supervised probation to ensure full restitution was made.
Stratton, 55, of Road P.5 near Dolores, admitted to starting the fire on his property near Roatcap Hill that forced the evacuation of about 30 nearby residences. He pleaded guilty to both a single felony and lone misdemeanor count of fourth degree arson.

subset: commoncrawl


text:
Useful Links
Greek Language
Login Form
Co-Financed Logos
|This project is co-funded by the European Commission. This publication reflects the views of the author only and the Commission cannot be held responsible for any use of the information contained therein.
|Masaryk University
|Written by Administrator
|Wednesday, 21 January 2015 12:47
Masaryk University
Masaryk University strives to create and disseminate knowledge, thus enhancing the quality of life and fostering cultural growth in the community. This mission stems from the university's founding values.
|Last Updated on Wednesday, 21 January 2015 12:53
Who's OnlineWe have 26 guests online
News from Greece
Glossa Poster


text:
Stay in the loop
Sign up for our newsletter to stay informed about the latest in mechanical ventilation:
- Intelligent Ventilation newsletter
- Hamilton Medical News
Complete the form to sign up for our newsletters!
* Required fields
Intelligent Ventilation Newsletter
Our Intelligent Ventilation Newsletter is published every two months in English and brings you the latest evidence and guidelines on various aspects of mechanical ventilation. You will also find practical tips for the bedside from ventilation experts, a quick quiz on waveforms, and plenty more.
Intelligent Ventilation Newsletter Volume 15, Issue 1
Our April newsletter was all about that very useful parameter, the expiratory time constant. Contents included a clinical discussion on monitoring respiratory mechanics in mechanically ventilated patients and our tip from the experts showed you how to use the expiratory time constant at the bedside.
Of course we also gave you another unusual waveform to interpret in our Test your IntelliVence quiz! See the complete issue here.
Hamilton Medical News
Hamilton Medical News is sent out periodically and keeps you up-to-date with everything around our ventilation technology, including new products and improvements. It is particularly useful for customers already using Hamilton Medical devices. You will also find a quick clinical update and information on upcoming events and lunch symposia.
Click here to see a recent edition of Hamilton Medical News.
Important note: By clicking "I agree to the privacy and cookie policy", you confirm that you have read and agree to the terms of our privacy policy, including the collection and storage of your data and our use of cookies. Please follow the link to read the privacy and cookie policy in full.


text:
Current Reviews: 0 | Add Your Review
Available ONLY where regular balloons can't go (Bet Shemesh, Center,Outlying Areas) we can send a "Balloon on a Stick"....Available in Happy Birthday or Mazal Tov Please specify below
Delivery in Israel Only. We do not deliver this product to: Gush Etzion, Jerusalem & Mevaseret Zion
Gili's Goodies
Efrat, 90435,
Toll Free: 1-866-721-7292 In Israel: 052-263-1808 En Français (+33)177500841
© Gilisgoodies 2015 All Rights Reserved. Made in Zencart by Beth Lanin Based on the template by Perfectus Web Designs.


text:
Check out the latest RPG news | Podcasts | Twitch Streams
Jazz name...Jailhouse Bones Jones.
Haha I loved the jazz ones -- some of them sound so legit!!New
Quote from: Dice on February 27, 2013, 01:49:18 AMHaha I loved the jazz ones -- some of them sound so legit!!NewYou can really see how rapidly she started aging there. She was a braless sweetheart in a new hope but by the time Jedi rolled around she was beginning to show some rough edges. It's a shame, she was very pretty. I wonder how much of that was hard living or just bad genes


text:
Advanced Digital Forensics and Incident Response
Excellent material for security professionals wanting a deeper level of knowledge on how to implement security policies, procedures, and defensive mechanisms in an organization.
Great course for people starting into security essentials.
FOR508: Advanced Digital Forensics and Incident Response will help you determine:
- How the breach occurred
- Compromised and affected systems
- What attackers took or changed
- Incident containment and remediation
DAY 0: A 3-letter government agency contacts you to say critical information was stolen through a targeted attack on your organization. They won't tell how they know, but they identify several breached systems within your enterprise. An Advanced Persistent Threat adversary, aka an APT, is likely involved - the most sophisticated threat you are likely to face in your efforts to defend your systems and data.
Over 80% of all breach victims learn of a compromise from third-party notifications, not from internal security teams. In most cases, adversaries have been rummaging through your network undetected for months or even years.
Incident response tactics and procedures have evolved rapidly over the past several years. Data breaches and intrusions are growing more complex. Adversaries are no longer compromising one or two systems in your enterprise; they are compromising hundreds. Your team can no longer afford antiquated incident response techniques that fail to properly identify compromised systems, provide ineffective containment of the breach, and ultimately fail to rapidly remediate the incident.
This in-depth incident response course provides responders with advanced skills to hunt down, counter, and recover from a wide range of threats within enterprise networks, including APT adversaries, organized crime syndicates, and hactivism. Constantly updated, the incident response course (FOR508) addresses today's incidents by providing hands-on incident response tactics and techniques that elite responders are successfully using in real-world breach cases.
A hands-on enterprise intrusion lab - developed from a real-world targeted APT attack on an enterprise network and based on how an APT group will target your network - leads you through the challenges and solutions via extensive use of the SANS SIFT Workstation collection of tools.
During the intrusion lab exercises, you will identify where the initial targeted attack occurred and lateral movement through multiple compromised systems. You will extract and create crucial cyber threat intelligence that can help you properly scope the compromise and detect future breaches.
During a targeted attack, an organization needs the best incident response team in the field. FOR508: Advanced Digital Forensics and Incident Response will train you and your team to respond, detect, scope, and stop intrusions and data breaches.
- Learn and master the tools, techniques, and procedures necessary in order to effectively detect, contain, and remediate against a variety of adversaries.
- Detect unknown live, dormant, and custom malware in memory across multiple Windows systems in an enterprise environment.
- Respond to hundreds of unique systems simultaneously using F-Response Enterprise and the SANS SIFT Workstation.
- Identify malware beaconing outbound to its command and control (C2) channel via memory forensics, registry analysis, and network connection residue.
- Determine how the breach occurred by identifying the beachhead and spear phishing attack mechanisms.
- Target anti-forensics techniques like hidden and time-stomped malware, along with utility-ware used to move in the network and maintain the attacker's presence.
- Use memory analysis and incident response tools in the SIFT Workstation to detect hidden processes, malware, attacker command lines, rootkits, network connections, and more.
- Track user and attacker activity second-by-second on the system you are analyzing through in-depth timeline and super-timeline analysis.
- Recover data cleared using anti-forensics techniques via Volume Shadow Copy and Restore Point analysis.
- Learn how file systems work and discover powerful forensics artifacts like NTFS $I30 indexes, journal parsing, and detailed Master File Table analysis.
- Identify lateral movement and pivots within your enterprise, showing how attackers transition from system to system without detection.
- Understand how the attacker can acquire legitimate credentials, including domain administrator rights - even in a locked-down environment.
- Track data movement as the attackers collect critical data and shift it to exfiltration collection points.
- Recover and analyze proprietary archive form .rar files used by APT-like attackers to exfiltrate sensitive data from the enterprise network.
- Use collected data to perform effective remediation across the entire enterprise.
Course Topics
- Advanced use of a wide range of best-of-breed open-source tools in the SANS SIFT Workstation to perform incident response and digital forensics.
- Responding to advanced adversaries such as nation-state actors, organized crime, and hacktivists.
- Rapid incident response analysis and breach assessment.
- Incident response and intrusion forensics methodology.
- Remote and enterprise incident response system analysis.
- Windows live incident response.
- Memory analysis during incident response.
- Timeline analysis.
- System restore points and volume shadow copy exploitation.
- In-depth windows NTFS file system examination to detect APT groups and advanced insider threats.
- Detection of anti-forensics and adversary hiding techniques.
- Discovery of unknown malware on a system.
- Adversary threat intelligence development, indicators of compromise, and usage.
- Cyber-kill chain strategies.
- Step-by-step tactics and procedures to respond to and investigate intrusion cases.
Course Syllabus
FOR508.1: Advanced Incident Response and Digital Forensics
Rob Lee
Mon Jun 13th, 2016
9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
Incident responders should be armed with the latest tools, memory analysis techniques, and enterprise incident response methodologies in order to identify, track, and contain advanced adversaries and remediate incidents. Incident response and forensic analysts must be able to scale their response across thousands of systems in their enterprise. Enterprise scanning techniques are now a requirement to track targeted attacks by an APT group or organized crime syndicates that can rapidly propagate through hundreds of systems. Responding to this many systems cannot be accomplished using the standard "pull the hard drive" forensic examination methodology. Such an approach will alert the adversaries that you are aware and may allow them to quickly adapt and exfiltrate sensitive information in response. This section examines the six-step incident response methodology as it applies to an enterprise's response during a targeted attack. We will show the importance of developing security intelligence in affecting the adversaries "kill chain." We will also demonstrate live response techniques and tactics that can be applied on a single system and across the entire enterprise.
Students will receive a full six-month license of F-Response Enterprise Edition, enabling each student to use his or her own workstation or the SIFT workstation to connect to hundreds or thousands of systems in the enterprise. This capability is used to benchmark, facilitate, and demonstrate new incident response technologies that enable a responder to look for indicators of compromise across the entire enterprise.
- SIFT Workstation 3 orientation
- Mounting remote/local drives via SIFT Workstation
- Remote enterprise memory acquisition using F-Response Enterprise
- Remote enterprise response and analysis using F-Response Enterprise
CPE/CMU Credits: 6
Real Incident Response Tactics
- Preparation: Key tools, techniques, and procedures an incident response team needs to properly respond to intrusions
- Identification: Proper scoping of an incident and detecting all compromised systems in the enterprise
- Containment: Identification of exactly how the breach occurred and what was stolen
- Eradication: Determining the key steps that must be taken to help stop the current incident
- Recovery: Recording of the threat intelligence to be used in the event of a similar adversary returning to the enterprise
- Lessons Learned
Threat and Adversary Intelligence
- Importance of Cyber Threat Intelligence
- Understanding the "Kill Chain"
- Threat Intelligence Creation and Use During Incident Response
- Incident Response Team Life-Cycle Overview
- Incident and Malware Detection - All Activity across a Specific System
- Enterprise Incident Response/Forensics - Specific Activity across All Systems
Remote and Enterprise Incident Response
- Remote System Access in the Enterprise
- Remote System Host-Based Analysis
- Scalable Host-Based Analysis (one analyst examining 1,000 systems)
- Remote Memory Analysis
Windows Live Incident Response
- Live Incident Response Kit and Tools
- Volatile Data Collection
- Comparison of Key Data Collected via Live Collection, Static Drive, and Memory Analysis Techniques
- Auto-Start Malware Persistence Checks
- Trusted Windows Command Shells
- Finding Evil: Automating Collection across the Enterprise
- Remote Command Shell Usage - PsExec
- Incident Response Using Powershell
- Live Response Key Tools
FOR508.2: Memory Forensics in Incident Response
Rob Lee
Tue Jun 14th, 2016
9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
Now a critical component of many incident response teams that detect advanced threats in their organization, memory forensics has come a long way in just a few years. It can be extraordinarily effective at finding evidence of worms, rootkits, and advanced malware used by an APT group of attackers. Memory analysis traditionally was solely the domain of Windows internals experts, but the recent development of new tools makes it accessible today to anyone especially incident responders. Better interfaces, documentation, and built-in detection heuristics have greatly leveled the playing field. This section will introduce some of the newest free tools available and give you a solid foundation in adding core and advanced memory forensic skills to your incident response and forensics capabilities.
- Detect unknown live and dormant custom malware in memory across multiple systems in an enterprise environment
- Find APT "beacon" malware over common ports that targeted attackers use to access command and control (C2) channels
- Find residual command-line input through scanning strings in memory and by extracting command history buffers
- Analysis of memory from infected systems:
- Stuxnet
- Zeus/Zbot
- Conficker
- Sobig
- StormWorm Rootkit
- Black Energy
- PsExec
- Custom APT command and control malware
CPE/CMU Credits: 6
Memory Acquisition
- Acquisition of System Memory from both Windows 32/64 Bit Systems
- Hibernation and Pagefile Memory Extraction and Conversion
- Virtual Machine Memory Acquisition
Memory Forensics Analysis Process
- Identify Rogue Processes
- Analyze Process DLLs and Handles
- Review Network Artifacts
- Look for Evidence of Code Injection
- Check for Signs of a Rootkit
- Acquire Suspicious Processes and Drivers
Memory Forensics Examinations
- Live Memory Forensics
- Memory Analysis Techniques with Redline
- Advanced Memory Analysis with Volatility
- Code Injection, Malware, and Rootkit Hunting in Memory
- Perform In-memory Windows Registry Examinations
- Extract Typed Adversary Command Lines
- Investigate Windows Services
- Find and Dump Cached Files from RAM
- Dumping Hashes and Credentials from Memory
Memory Analysis Tools
- Rekall
- Volatility
- Redline
- MoonSols Windows Memory Toolkit
FOR508.3: Timeline Analysis
Rob Lee
Wed Jun 15th, 2016
9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
Timeline analysis will change the way you approach digital forensics and incident response. . . forever.
Learn advanced incident response techniques uncovered via timeline analysis directly from the developers who pioneered timeline analysis tradecraft. Temporal data is located everywhere on a computer system. File system modified/access/creation/change times, log files, network data, registry data, and Internet history files all contain time data that can be correlated into critical analysis to successfully solve cases. Pioneered by Rob Lee in 2001, timeline analysis has become a critical incident response and forensics technique to solve complex cases. New timeline analysis frameworks provide the means to conduct simultaneous examinations of a multitude of time-based artifacts. Analysis that once took days now takes minutes.
This section will step you through the two primary methods of building and analyzing timelines created during advanced incident response and forensic cases. Exercises will not only show analysts how to create a timeline, they will also introduce key methods to help you use those timelines effectively in your cases.
- Using timeline analysis, determine how the breach originally occurred by identifying an APT group beachhead and spear phishing attack
- Target hidden and time-stomped malware and utility-ware that an APT uses to move in the network and maintain its presence
- Track APT activity second-by-second through in-depth super timeline analysis
- Observe targeted attackers laterally move to other systems in the enterprise by watching footprints left in filesystem times and other temporal-based artifacts
- Learn how to filter system artifact, fil system, and registry timelines to target specific data efficiently
CPE/CMU Credits: 6
Timeline Analysis Overview
- Timeline Benefits
- Prerequisite Knowledge
- Finding the Pivot Point
- Timeline Context Clues
- Timeline Analysis Process
Memory Analysis Timeline Creation
- Memory Timelining
Filesystem Timeline Creation and Analysis
- MACB Meaning by Filesystem (NTFS vs. FAT)
- Windows Time Rules (File Copy vs. File Move)
- Filesystem Timeline Creation Using Sleuthkit and fls
- Bodyfile Analysis and Filtering Using the mactime Tool
Super Timeline Creation and Analysis
- Super Timeline Artifact Rules
- Program Execution, File Knowledge, File Opening, File Deletion
- Timeline Creation with log2timeline
- log2timeline Input Modules
- log2timeline Output Modules
- Filtering the Super Timeline Using l2t_process
- Targeted Super Timeline Creation
- Automated Super Timeline Creation
- Super Timeline Analysis
FOR508.4: Deep Dive Forensic Analysis & Anti-Forensics Detection
Rob Lee
Thu Jun 16th, 2016
9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
In digital forensics, many tools simply require a few mouse clicks to automatically recover data. However, this "push button" mentality has led to many inaccurate results in the past few years. It is also very difficult to identify a skilled attacker solely using antiquated and slow commercial toolsets. This section will free you from relying on "push button" forensic techniques by showing you how the engines of digital forensic tools really work. To understand how to carve out data, it is best to understand how to do it by hand and then show how automated tools should be able to recover the same data. You will learn how to perform string searches looking for specific residue from a file, as well as multiple ways to recover the file data across the layers of the file system. If a file or registry key has been wiped or deleted, this section shows how to use Windows historical artifacts to recover key pieces of the data even if they no longer exist on the system. This knowledge will allow you see beyond most anti-forensic techniques, enabling you to gain the advantage while responding to breaches in your organization and to investigate more advanced subjects actively attempting to hide from you.
- Recover data cleared through anti-forensic techniques used by targeted attackers via Volume Shadow Copy and Restore Point analysis
- Extract stream-based data and identify critical artifacts such as domains, IP addresses, and email addresses that were used during the attack
- Find evidence of Poison Ivy use on the compromised system
- Detect and identify key files out of unallocated space including malware, prefetch files, LNK files, and more
- Use filesystem knowledge to detect evidence of anti-forensic and timestomping
- Recover .rar files used by an APT to exfiltrate data from the network
CPE/CMU Credits: 6
Advanced "Evidence of Execution" Artifacts
- RecentFileCache.bcf /Amcache.hve
- Application Compatibility Cache (ShimCache)
Windows 7/8 Server 2008/2012 Shadow Volume Copy Analysis
- Volume Shadow Copy Data Analysis
- Acquiring Shadow Copy Volume Images
- Raw and Live Shadow Copy Examination Using the SIFT Workstation
- Creating and Analyzing Shadow Volume Timelines
Deep Dive Malware and Anti-Forensic Detection
- Sleuthkit Toolset
- File-Based Data Carving
- Carving Key Files from a Compromised System (Malware, .rar Files, Prefetch Files, and Shortcut Files)
- NTFS Filesystem Analysis
- Master File Table (MFT) In Depth
- NTFS System Files
- NTFS Metadata Attributes ($Standard_Information, $Filename, $Data)
- Rules of Windows Timestamps for $StdInfo and $Filename
- NTFS Timestamps
- Resident vs. Nonresident Files
- Alternate Data Streams
- Directory Listings and the $I30 file
- Transaction Logging and the $Logfile and $UsnJrnl
- What Happens When Data is Deleted from a NTFS Filesystem?
Anti-Forensic Detection Methodologies
- MFT Anomalies
- Timeline Anomalies
- Deleted File
- Deleted Registry Keys
- File Wiping
- Clearing Browsing History
- Privacy Cleaner
- Adjusting Timestamps
FOR508.5: Threat Hunting
Rob Lee
Fri Jun 17th, 2016
9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
The adversaries are good. We must be better.
Over the years, we have observed that many incident responders have a challenging time finding malware without pre-built indicators of compromise or threat intelligence gathered prior to a breach. This is especially true in APT group intrusions. This advanced session will demonstrate techniques used by first responders to identify malware or forensic artifacts when very little information exists about their capabilities or hidden locations. We will discuss techniques to help funnel possibilities down to the candidates most likely to be evil malware trying to hide on the system.
The section concludes with a step-by-step approach to handling some of the most difficult types of investigations. You will learn the best ways to approach intrusion and spear phishing attacks. You will know the locations you can examine to determine if file wiping occurred. Regardless of the actions hackers might take, they will always leave something that can be traced. This section will consolidate your new skills into a working attack plan to solve these difficult cases.
- Find unknown malware across your enterprise by looking for dormant and active malware traces
- Discover which systems the targeted attackers laterally moved to in the enterprise and how they transitioned from system to system so easily without being detected
- Understand how an APT group can acquire domain admin rights in a locked-down environment
CPE/CMU Credits: 6
Adversary and Malware Hunting
- Rapid Data Triage Analysis
- Cyber Threat Intelligence & Indicators of Compromise (IOC) Searching
- Evidence of Persistence
- Supertimeline Examination
- Packing/Entropy/Executable Anonmaly/Density Checks
- System Logs
- Memory Analysis
- Malware Identification
Methodology to Analyze and Solve Challenging Cases
- Malware/Intrusion
- Spear Phishing Attacks
- Web Application Attacks/SQL Injection
- Advanced Persistent Threat Actors
- Detecting Data Exfiltration
FOR508.6: APT Intrusion Incident Response Challenge
Rob Lee
Sat Jun 18th, 2016
9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
This incredibly rich and realistic enterprise intrusion exercise is based on a real-world advanced persistent threat (APT) group. It brings together techniques learned earlier in the week and tests your newly acquired skills in a case that simulates an attack by an advanced adversary. The challenge brings it all together using a real intrusion into a complete Windows enterprise environment. You will be asked to uncover how the systems were compromised in the initial intrusion, find other systems the adversary moved to laterally, and identify intellectual property stolen via data exfiltration. You will walk out of the course with hands-on experience investigating realistic attacks, curated by a cadre of instructors with decades of experience fighting advanced threats from attackers ranging from nation-states to financial crime syndicates and hactivist groups.
CPE/CMU Credits: 6
- The Intrusion Forensic Challenge will have each incident response team analyzing multiple systems in an enterprise network.
- Each incident response team will be asked to answer the following key questions during the challenge just as they would during a real-breach in their organizations:
1. How and when did the APT group breach our network?
2. List all compromised systems by IP address and specific evidence of compromise.
3. When and how did the attackers first laterally move to each system?
4. How and when did the attackers obtain domain administrator credentials?
5. Once on other systems, what did the attackers look for on each system?
6. Find extracted email from executive accounts and perform damage assessment.
7. Determine what was stolen: Recover any .rar files or other archives exfiltrated, find encoding passwords, and extract the contents to verify extracted data.
8. Collect and list all malware used in the attack.
9. Develop and present security intelligence or an indicator of compromise (IOC) for the APT-group "beacon" malware for both host- and network-based enterprise scoping. What specific indicators exist for the use of this malware?
10. Do we need to change the passwords for every user in domain or just the ones affected by the systems compromised?
11. Based on the attacker techniques and tools discovered during incident, what are the recommended steps to remediate and recover from this incident?
a. What systems need to be rebuilt?
b. What IP addresses need to be blocked?
c. What countermeasures should we deploy to slow or stop these attackers if they come back?
d. What recommendations would you make in order to detect these intruders in our network again?
|Mon Jun 13th, 2016
|9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
|Rob Lee
|Tue Jun 14th, 2016
|9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
|Rob Lee
|Wed Jun 15th, 2016
|9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
|Rob Lee
|Thu Jun 16th, 2016
|9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
|Rob Lee
|Fri Jun 17th, 2016
|9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
|Rob Lee
|Sat Jun 18th, 2016
|9:00 AM - 12:15 PM US Eastern
1:30 PM - 5:00 PM US Eastern
|Rob Lee
Additional Information
Laptop Required
You can use any 64-bit version of Windows, Mac OSX, or Linux as your core operating system that also can install and run VMware virtualization products. For Macs, we recommend setting up Boot Camp and running Windows directly on your Mac. We have had challenges with VMware Fusion products with several exercises in class.
It is critical that your CPU and operating system support 64-bit so that our 64-bit guest virtual machine will run on your laptop. VMware provides a free tool for Windows and Linux that will detect whether or not your host supports 64-bit guest virtual machines. For further troubleshooting, this article also provides good instructions for Windows users to determine more about the CPU and OS capabilities.
Please download and install VMware Workstation 11, VMware Fusion 7, or VMware Player 7 or higher versions on your system prior to class beginning. If you do not own a licensed copy of VMware Workstation or Fusion, you can download a free 30-day trial copy from VMware. VMware will send you a time-limited serial number if you register for the trial at their website. VMware Player is a free download that does not need a commercial license. Most students find VMware Player adequate for the course.
- CPU: 64-bit Intel i5 x64 2.0+ GHz processor or higher based system is mandatory for this class (Important - Please Read: a 64-bit system processor is mandatory)
- RAM: 8 GB (Gigabytes) of RAM minimum (Note: We strongly recommend 8 GB of RAM or higher to get the most out of the course)
- Host Operating System: Fully patched & updated Windows (7+), Mac OSX (10.10+), or recent version of Linux operating system (released 2014 or later) that also can install and run VMware virtualization products (VMware Workstation, VMware Fusion, or VMware Player). Please note: It is necessary to fully update your host operating system prior to the class to ensure you have the right drivers and patches installed to utilize the latest USB 3.0 devices. Those who use a Linux host must also be able to access ExFAT partitions using the appropriate kernel or FUSE modules.
- Networking: Wireless 802.11 B, G, N, or AC
- USB 3.0 Port(s) - highly recommended
- 200+ Gigabyte Host System Hard Drive minimum
- 150 Gigabytes of Free Space on your System Hard Drive - Free Space on Hard Drive is critical.
- The student should have the capability to have Local Administrator Access within their host operating system and BIOS settings
- PLEASE NOTE: Do NOT Download a copy of the SIFT workstation. We will be providing you a FOR508 version specifically configured for training on Day 1 of the course.
MANDATORY FOR508 SYSTEM SOFTWARE REQUIREMENTS (Please install the following prior to the beginning of the class):
- Install VMware Workstation 11, VMware Fusion 7, or VMware Player 7 (higher versions are okay)
- Download and install 7Zip
- Microsoft Office (any version) w/Excel installed on your host - Note you can download Office Trial Software online (free for 60 days)
- If you are using an Apple Laptop/MacBook with OSX as your operating system it is required you additionally bring a Windows Virtual System (Win7 or Win8 - Any Version) to class or install bootcamp
- If you attended FOR408, please bring your copy of the FOR408 - Windows SIFT Workstation Virtual Machine as you can use it for the final challenge.
- Bring/install any other forensic tool you feel could be useful (EnCase, FTK, etc). For the final challenge at the end of the course, you can utilize any forensic tool, including commercial capabilities, to help you and your team. If you have any dongles, licensed software, you are free to use it.
- Do NOT Download a copy of the SIFT workstation. We will be providing you a classroom copy specifically configured for training on Day 1 of the course.
If you have additional questions about the laptop specifications, please contact email@example.com.
Who Should Attend
- Incident Response Team Leaders and Members who regularly respond to complex security incidents/intrusions from an APT group/advanced adversaries and need to know how to detect, investigate, remediate, and recover from compromised systems across an enterprise.
- Security Operations Center (SOC) personnel and Information Security Practitioners who support hunt operations, seeking to identify attackers in their network environments
- Experienced Digital Forensic Analysts who want to consolidate and expand their understanding of filesystem forensics, investigating technically advanced individuals, incident response tactics, and advanced intrusion investigations.
- System Administrators who are on the front lines defending their systems and responding to attacks
- Federal Agents and Law Enforcement who want to master advanced intrusion investigations and incident response, and expand their investigative skills beyond traditional host-based digital forensics
- Red Team Members, Penetration Testers, and Exploit Developers who want to learn how their opponents can identify their actions. Discover how common mistakes can compromise operations on remote systems, and how to avoid them. This course covers remote system forensics and data collection techniques that can be easily integrated into post-exploit operating procedures and exploit testing batteries.
- SANS FOR408 and SEC504 Graduates looking to take their skills to the next level.
FOR508 is an Advanced Incident Response course focusing on detecting and responding to advanced persistent threats and organized crime threat groups. We do not cover the basics of incident response, windows digital forensics, or hacker techniques in the course.
We recommend that you should have a background in one of the following SANS courses: SEC504, FOR408, or equivalent training.
HANDS-ON APT Enterprise Intrusion Lab
One of the biggest complaints you hear in the digital forensics and incident response community is the lack of realistic intrusion data. Most real-world intrusion data are simply too sensitive to be shared.
Starting over a year ago, the FOR508 course authors created a realistic scenario based on experiences surveyed from a panel of responders who regularly respond to targeted APT attacks. They helped review and guide the targeted attack "script" used to create the scenario. As a result, the authors created an incredibly rich and realistic attack scenario across multiple enterprise systems. This APT attack lab forms the basis for training during the week. The network was set up to mimic a standard "protected" enterprise network using standard compliance checklists:
- Full auditing turned on per recommended FISMA guidelines
- Windows domain controller (DC) set up and configured; DC hardened similar to what is seen in real enterprise networks
- Systems installed with real software on them that is used (Office, Adobe, Skype, Tweetdeck, Email, Dropbox, Firefox, Chrome)
- Fully patched systems (patches are automatically installed)
- Enterprise incident response agents
- Enterprise A/V and on-scan capability based on the DoD's Host-Based Security System (HBSS )
- Endpoint Protection Software - Anti-virus, Anti-spyware, Safe surfing, Anti-spam, Device Control, Onsite Management, Host Intrusion Prevention (HIPS)
- Firewall only allows inbound port 25 and outbound ports 25, 80, 443
This exercise and challenge will be used to show real adversary traces across host systems, system memory, hibernation/pagefiles and more.
- Phase 1 - Spearphishing attack and malware C2 beacon installation
- Phase 2 - Lateral movement to other systems, malware utilities download, install additional beacons, and obtain domain admin credentials
- Phase 3 - Search for intellectual property, profile network, dump email, dump enterprise hashes
- Phase 4 - Collect data to exfiltrate and copy to staging system. Archive data using rar and a complex passphrase
- Phase 5 - Exfiltrate rar files from staging server, perform cleanup on staging server.
In the end, we will have created authentic memory captures on each box, network captures, malware samples, in addition to full disk images w/Restore Points (XP) and VSS for (Win7 and Win2008) systems
Why Take This Course?
What you Will Learn
- Applying incident response processes, threat intelligence, and digital forensics to investigate breached enterprise environments from Advanced Persistent Threat (APT) groups, organized crime syndicates, or hackivists.
- Discover every system compromised in your enterprise utilizing incident response tools such as F-Response and digital forensic analysis capabilities in the SIFT Workstation to identify APT beach head and spear phishing attack mechanisms, lateral movement, and data exfiltration techniques.
- Using the SIFT Workstation's capabilities, perform forensic analysis and incident response on any remote enterprise hard drive or system memory without having to image the system first allowing for immediate response and scalable analysis to take place across the enterprise.
- Using system memory and the Volatility toolset to discover active malware on a system, determine how the malware was placed there, and recover it to help develop key threat intelligence to perform proper scoping activities during incident response.
- Detect advanced capabilities such as Stuxnet, TDSS, or APT command and control malware immediately through memory analysis using Redline's Malware Rating Index (MRI) to quickly ascertain the threat to your organization and aid in scoping the true extent of the data breach
- Track the exact footprints of an attacker crossing multiple systems and observe data they have collected to exfiltrate as you track your adversary's movements in your network via timeline analysis using the log2timeline toolset
- Begin recovery and remediation of the compromise via the use of Indicators of Compromise (IOC), Threat Intelligence, and IR/Forensics key scanning techniques to identify active malware and all enterprise systems affected by the breach
- Perform filesystem surgery using the sleuthkit tool to discover how filesystems work and uncover powerful forensic artifacts such as NTFS $I30 directory file indexes, journal parsing, and detailed Master File Table analysis
- Using volume shadow snapshot examinations, XP restore point analysis, and NTFS examination tools in the SIFT Workstation, recover artifacts hidden by anti-forensic techniques such as timestomping, file wiping, rootkit hiding, and privacy cleaning.
- Discover an adversary's persistence mechanisms to allow malware to continue to run on a system after a reboot using command-line tools such as autorunsc, psexec, jobparser, group policy, triage-ir, and IOCFinder.
What You Will Receive
- SIFT Workstation 3
- This course extensively uses the SIFT Workstation 3 to teach incident responders and forensic analysts how to respond to and investigate sophisticated attacks.
- SIFT contains hundreds of free and open source tools, easily matching any modern forensic and incident response commercial tool suite.
- A virtual machine is used with many of the class hands-on exercises.
- Ubuntu LTS Base
- 64 bit base system
- Better memory utilization
- Auto-DFIR package update and customizations
- Latest forensic tools and techniques
- VMware Appliance ready to tackle forensics
- Cross-compatibility between Linux and Windows
- Expanded Filesystem Support (NTFS, HFS, EXFAT, and more)
- F-Response Enterprise
- Enables incident responders to access remote systems and physical memory of a remote computer via the network.
- Gives any incident response or forensics tool the capability to be used across the enterprise.
- Perfect for intrusion investigations and data breach incident response situations.
- Deployable agent to remote systems.
- SIFT Workstation 3 compatible.
- Vendor neutral - works with just about any tool.
- Number of simultaneous examiners = unlimited.
- Number of simultaneous agents deployed = unlimited.
- Six-month license allows it to continue to be used and benchmarked in your own environment at work/home.
- 64 GB Course USB
- USB loaded with APT case images, memory captures, SIFT workstation 3, tools, and documentation
- SANS DFIR APT Case Exercise Workbook
- Exercise book is over 250 pages long with detailed step by step instructions and examples to help you become a master incident responder
- "File System Forensic Analysis"
- Best-selling book on deep file system analysis authored by Brian Carrier
- SANS DFIR Cheatsheets to Help Use the Tools
- MP3 audio files of the complete course lecture
You Will Be Able To
- Apply incident response processes, threat intelligence, and digital forensics to investigate breached enterprise environments from Advanced Persistent Threat (APT) groups, organized crime syndicates, or hackivists.
- Discover every system comprised in your enterprise utilizing incident response tools such as F-Response and digital forensic analysis capabilities in the SIFT Workstation to identify APT beach head and spear phishing at- tack mechanisms, lateral movement, and data exfiltration techniques.
- Using the SIFT Workstation's capabilities, preform forensic analysis and incident response on any remote enterprise hard drive or system memory without having to image the system first, allowing for immediate response and scalable analysis to take place across the enterprise.
- Using system memory and the Volatility toolset to discover active malware on a system, determine how the malware was placed there, and recover it to help develop key threat intelligence to perform proper scoping activities during incident response.
- Detect advanced capabilities such as Stuxnet, TDSS, or APT command and control malware immediately through memory analysis using Redline's Malware Rat- ing Index (MRI) to quickly ascertain the threat to your organization and aid in scoping the true extent of the data breach
- Track the exact footprints of an attacker crossing multiple systems and observe data they have collected to exfiltrate as you track your adversary's movements in your network via timeline analysis using the log2timeline toolset
- Begin recovery and remediation of the compromise via the use of Indicators of Compromise (IOC), Threat Intelligence, and IR/Forensics key scanning techniques to identify active malware and all enterprise systems affected by the breach
- Perform filesystem surgery using the sleuth kit tool to discover how filesystems work and uncover powerful forensic artifacts such as NTFS $I30 directory file indexes, journal parsing, and detailed Master File Table analysis
- Using volume shadow snapshot examinations, XP restore point analysis, and NTFS examination tools in the SIFT Workstation, recover artifacts hidden by anti-forensic techniques such as timestomping, file wiping, rootkit hiding, and privacy cleaning.
- Discover an adversary's persistence mechanisms to allow malware to continue to run on a system after a reboot using command-line tools such as autorunsc, psexec, jobparser, group policy, triage-ir, and IOCFinder.
Press & Reviews
"THE SANS508 COURSE EXCEEDED MY EXPECTATIONS IN EVERY WAY. IT PROVIDED ME THE SKILLS, KNOWLEDGE, AND TOOLS TO EFFECTIVELY RESPOND TO AND HANDLE APTS AND OTHER ENTERPRISE WIDE THREATS." -Josh Moulin NSTEC/NNSA/DOE
"THE EXAMPLES IN THE COURSE RELATE TO WHAT I NEED TO KNOW TO DEAL WITH REAL WORLD THREATS." -Tim Weaver, Digital Mtn. Inc.
"I WAS SURPRISED AND AMAZED AT HOW EASY IT IS TO DO MEMORY ANALYSIS AND HOW HELPFUL IT IS." - Brian Dugay, Apple
"THE LEVEL OF DETAIL IS AMAZING. THE METHODOLOGY IS CLEARLY EFFECTIVE AT FINDING PERTINENT ARTIFACTS." - no name
"I'VE TAKEN OTHER NETWORK INTRUSION CLASSES BUT NOTHING THIS IN-DEPTH. THE CLASS IS OUTSTANDING!" -- Craig Goldsmith, FBI
"CUTTING EDGE EXPERTISE TAUGHT BY WORLD CLASS EXPERTS." -Joseph Murray, Deloitte
"I AM A DIFFERENT MAN AS A RESULT OF THIS COURSE." - Travis Farral, XTO Energy
"ABSOLUTELY ESSENTIAL KNOWLEDGE. TRADITIONAL KNOWLEDGE IS USEFUL, BUT THIS COURSE PROVIDES THE PRACTICAL SIDE OF A GROWING TREND." -Erik Musick, Arkansas State Police
"THIS IS A GREAT CLASS AND SHOULD BE MANDATORY FOR ANYONE IN THE FORENSIC FIELD. GREAT JOB, ROB!" -Mark Merchant, State of Alaska/State Security Office
"COME PREPARED TO LEARN A LOT." -Todd Black Lee, The Golden 1 Credit Union
"YOU CAN DELETE IT, HIDE IT, RENAME IT, BUT WE WILL FIND IT." -Edward Fuller, Department of Defense
"GREAT COURSE! THIS NOT ONLY HELPS ME IN FORENSICS BUT ALSO IN CREATING USE-CASES FOR OUR OTHER INTRUSION ANALYSIS TOOLS." -Joseph Murray, Deloitte
"IT IS HARD TO REALLY SAY SOMETHING THAT WILL PROPERLY CONVEY THE AMOUNT OF MENTAL GROWTH I HAVE EXPERIENCED THIS WEEK." -Travis Farral, XTI Energy
"EXCELLENT COURSE, INVALUABLE HANDS-ON EXPERIENCE TAUGHT BY PEOPLE WHO NOT ONLY KNOW THE TOOLS AND TECHNIQUES, BUT KNOW THEIR QUIRKINESS THROUGH PRACTICAL, REAL-WORLD EXPERIENCE." -John Alexander, US Army
"THIS COURSE (FOR508) REALLY TAKES YOU FROM 0-60 IN UNDERSTANDING THE CORE CONCEPTS OF FORENSICS, ESPECIALLY THE FILE SYSTEM." -Matthew Harvey, U.S. Department of Justice
"IF YOU NEED TO TRACK DOWN WHAT HAPPENED IN YOUR ENVIRONMENTS, THIS IS A MUST HAVE COURSE!" -Fran Moniz, American National Insurance
"THE CAPSTONE EXERCISE IS AWESOME, PUTS TRACKING THE APT INTO PRACTICE." -Gavin Worden, SD-LECC
"BEST FORENSICS TRAINING I'VE HAD SO FAR. I THOUGHT THE SOME OTHERS COURSES WERE GREAT BUT 508 IS A LOT MORE CURRENT AND APPLICABLE TO THE REAL WORLD! EXCELLENT COURSE AND INSTRUCTOR OVERALL!" -Marc Bleicher, Bit9
"THE MORE I PROGRESS THROUGH THE COURSE, THE MORE I REALIZE JUST HOW MUCH CAPACITY THERE IS TO PRODUCE ANSWERS TO TOUGH QUESTIONS. WHERE I MIGHT NOT HAVE FOUND SUPPORTING EVIDENCE IN PAST CASES, I FEEL I HAVE SO MANY NEW AVENUES TO EXPLORE. A REAL EYE-OPENER. I ALSO GREATLY APPRECIATE THE FOCUS ON INCIDENT RESPONSE." - Dave Ockwell-Jenner, SITA
"I HAVE ALREADY USED SEVERAL OF THE TOOLS/TECHNIQUES FROM THE COURSE WITH PAST-CASE EVIDENCE TO UNCOVER THINGS I DID NOT PREVIOUSLY KNOW." - Dave Ockwell-Jenner, SITA
"MY SOC FOCUSES A LOT ON INCIDENT RESPONSE AND QUICK FORENSICS, SO THE COURSE MATERIAL IS EXTREMELY VALUABLE." - Anonymous
"I ROUTINELY PERFORM LIVE MEMORY CAPTURES AND HAVE GONE THROUGH THEM LOOKING FOR THE OBVIOUS, BUT I HAD NO IDEA, UNTIL FOR508, HOW MANY ARTIFACTS ARE CONTAINED IN RAM." - M Scott Saul, FBI
"THE SANS INSTITUTE IS CURRENTLY THE LEADER IN THE COMMERCIAL IR AND COMPUTER FORENSIC TRAINING MARKET. THEY HAVE A LARGE NUMBER OF QUALITY COURSES." - Luttgens, Jason; Pepe, Matthew; Mandia, Kevin. Incident Response & Computer Forensics, Third Edition - July 2014
"YOU HAVE THE CONTENT WHICH IS CLOSE TO REAL WTHEN YOU HAVE THE INSTRUCTOR THAT GOES INTO A LOT OF REAL WORLD EXAMPLES. JUST GREAT." -Anonymous
"FOR508 COMBINED WITH FOR572 SHOWS A COMPLETE PICTURE FROM DISK SIDE TO NETWORK SIDE." - Dow Shirley, Energy Solutions
"MOST IN-DEPTH, STATE OF THE ART IR COURSE I CAN IMAGINE. FIRST TIME I THINK DEFENSE CAN ACTUALLY GAIN AN ADVANTAGE. THANK YOU." - Kai Thomsen, AUDI AG
- CSO ONLINE: Advanced Persistent Threats can be beaten, says expert Detection is key, but how you respond to APTs is equally important
- SECURITY BISTRO: Understanding and defeating APT, Part 1: Waking up to the who and why behind APT
- SECURITY BISTRO: Understanding and defeating APT, Part 2: Fighting the 'forever war' against implacable foes
Should I take SANS 408 or 508? (part 1) - http://digitalforensicstips.com/category/training_reviews/
SANS 508 Compared to 408 Part Two (part 2) - http://digitalforensicstips.com/2013/04/sans-508-compared-to-408-part-two-plus-a-side-of-610/
Incident Response Course Author Statement
"In describing the advanced persistent threat (APT) and advanced adversaries, many experts have said, 'There are people smarter than you, who have more resources than you, and who are coming for you. Good luck with that.' They were not joking. The results over the past several years clearly indicate that hackers employed by nation-states and organized crime are racking up success after success. The APT has compromised hundreds of organizations. Organized crime organizations using botnets are exploiting ACH fraud daily. Similar groups are penetrating banks and merchants, stealing credit card data. Fortune 500 companies are beginning to detail data breaches and hacks in their annual stockholder reports.
"In other words, the enemy is getting better and bolder, and their success rate is impressive."
"We can stop them, but in order to do so we need to field more sophisticated incident responders and digital forensics investigators. We need lethal digital forensics experts who can detect and eradicate advanced threats immediately. A properly trained incident responder could be the only defense your organization has left during a compromise. Forensics 508: Advanced Digital Forensics and Incident Response is crucial training for you to become the lethal forensicator who can step up to these advanced threats. The enemy is good. We are better. This course will help you become one of the best."
- Rob Lee
Venue Information
- World Wide Web
- Secure Site Requires Login ID & Password
Webcast Classroom Training,


text:
Transfer School:
Dominican College
Transfer Program:
Occupational Therapy (Master of Occupational Therapy)
JCC Program:
Printer-friendly version
Guarantees acceptance of JCC students who graduate with an A.A.S. Occupational Therapy Assistant and a minimum cumulative grade point average of 3.0. Upon completion of coursework specified in the agreement, students who meet all requirements of the B.S./M.S. Occupational Therapy degree program are guaranteed admission into that program. Students can generally earn the bachelor's and master's degrees in three years at Dominican College. (2012)


text:
Search this website. You can use fund codes to locate specific funds
Our vision is to contribute to a more sustainable form of capitalism by creating the world's most effective stewardship platform.
EOS is a leading stewardship provider with a focus on achieving positive change. Our dedicated team of engagement and voting specialists enables pension funds and other longer-term institutional investors to achieve their fiduciary responsibilities and be more active owners of companies.
We believe more active ownership by investors is essential to build a global financial system that delivers improved long-term returns on investment as well as better, more sustainable outcomes for society, in the interests of ultimate beneficiaries.
We seek relevant environmental indicators and encourage companies to manage their environmental footprint, set appropriate targets and disclose progress. We want to hold companies to account for the way they manage natural resources and work towards a sustainable low-carbon economy.
We work to create long-term sustainable economies by improving human capital management and supply chains, raise health and safety standards, stamp out bribery and corruption and engage on labour and community relations, including disputes with unions.
We promote transparency and high standards of accountability at companies worldwide. We seek reassurance that companies have an appropriate board structure, and that board members have the right skills, a diverse background and sufficient independence.
Stewardship is not just good for the environment and society. We want organisations to understand that it is good for business. We aim to embed sustainability in business strategy and change corporate culture for the better.
Corporate engagement – with companies that form part of the public equity and corporate fixed income holdings of our clients to seek positive change for our clients, the companies and the societies in which they operate.
Public policy & market best practice engagement – with legislators, regulators, industry bodies and other standard-setters to shape capital markets and the environment in which companies and their investors operate.
Intelligent voting – recommendations that are, where practicable, engagement-led and involve communicating with company management and boards around the vote to ensure that our rationale is understood by the company and that recommendations are well-informed and lead to change where necessary.
Portfolio screening – we help our clients to fulfil their stewardship obligations through monitoring their portfolios to regularly identify companies that are in or near breach of international norms and conventions.
Advisory services – we work with our clients to develop their responsible ownership policies, drawing on our extensive experience and expertise to advance their stewardship strategies.


text:
Use the "Add to Favourites" button to add a name to your favourites list, and then come back later to sort through your list. We are adding new names every week, and welcome suggested baby names. By all means if you know a name that we do not have listed, add it to the site through our suggest a name page. Or if you have an alternate baby name meaning or name origin to what we have displayed – let us know!
So what are you waiting for – go find that name!
List your personal website on your Name Page
|If you have a blog or webpage about you we are happy to link to it from the baby names page on our site which matches YOUR name.Just search for your name, then follow the direction to add your name. In some cases, we'll even link to your site from our home page….. see some of these personal sites below!
We've got over 80,000 baby names on our site, all researched from a multitude of different sources.
Whilst we do our best to get every name meaning and origin right, invariably there will be some that are either incomplete, inaccurate, or simple missing.
If you've got some expertise about a certain name, be it one already listed, one that's missing or one that you'd like us to research…. add it to our database now and we'll update / research that name!


text:
The quickest access to the world of STOLL. Simply log in with your username and password.
These ensure reduced and constant yarn tension: the optimal yarn delivery device for the maximum number of threads.
With improved design and very good handling the yarn control units provide easy yarn insertion and scalable setting of the required parameters.
Advantages of the pelerine spring-transfer needle with spring-loaded latch: high stitch tension, high operational reliability and small needle-consuming.
Split-function, three way technique or simultaneous transfer to the front and rear provide optimal system allocation and maximum production output.
No moving parts, no wear - the Stoll selection systems are maintenance-free and safe to run. Two selection positions for each system in each direction.
Dynamic stitch tension setting with step motors: very fast adjusting of stitch tension and multiple stitch tensions in one row.
knitting 3D patterns with high operational reliability? It is no problem thanks to the proven Stoll holding-down technology.
The needle bed comes with a racking with four inch racking course and programmable racking speed.
Free programmable system with main take-down, upper take-down and take-down comb for knitting start with empty needles. The roller segments are variably adjustable.
On both sides arranged clamping and cutting points provide the individual feed of separate yarn carriers.
The advantages: Turbine with high suction effect, brush at the extraction points and generously dimensioned lint container.
Useful – you have always eye contact with the fabric trough the display slider – and clear: Color display with 800 x 600 pixel and touch screen.
Thanks to individual user interface and intuitive menu guidance pattern changes can be achieved easily at the machine directly.
Especially convenient and useful: the function order/sequence knitting is programmable too with Stoll-touchcontrol.
You can connect your CMS via Internet with standard networks for fast transmission of large amounts of data.
For all cases: even after a power failure, you can continue the knitting process with a Stoll machine faultless.
Work safely: encapsulation in the working area, CFC-protection system (carriage Force Control), shock termination front and rear, meeting of all CE guidelines.
CMS 830 C knit&wear
The CMS 830 C knit&wear offers a working width of 84"/213 cm and three systems. With the gauge E 2,5.2, it's exactly the right machine for complete articles with ultra-coarse stitches, a low yarn consumption and high productivity - even in extra-large sizes.
84" / 213 cm
- Technical Data (91.08 KB)
Additional yarn feeders
Machines with one carriage can utilize up to 32 yarn feeders. Also for coarse or abrasive yarns.
Front panel for fabric collection chamber
Ensures that the fabric does not drop out of the fabric collection chamber.
Clamping and cutting device
Automatic thread disposal of up to 16 yarn feeders by eight separate clamping and cutting devices on each side. (Not for all models available).
Cleaning device
A turbine provides for a high suction effect. Thanks to the brush at the suction points and the generously dimensioned lint container, the cleaning device is especially efficient.
Pelerine spring-transfer needle with spring-loaded latch and conical hook. Ensures tight knitting and high running safety. Very low needle consumption.
Display slide with color monitor
Practical and clear: colour display 800x600 pixels and touchscreen. Enables to enter machine commands while maintaining eye contact to the fabric. (not for Economy Line models)
Electronic selection system
No moving parts, no wear - that makes the Stoll selection systems maintenance-free and increases running stability. Two selection points for each system in each direction.
Fabric take-down system Stoll-multiflex®
The take-down system, consisting of a main take-down, upper take-down and take-down comb for fabric starts on empty needles, operates automatically. The roller segments are variably adjustable, and all three take-down components are freely programmable.
Friction feed wheels
These ensure a reduced, constant thread tension. An optimum yarn supply device for a maximum number of threads. (Not for all models standard equipment).
Gauge conversion
Flexible and economical adjustment of machine gauge by means of gauge conversion or needle exchange.
Intarsia knitting
Easy and economical preparation of our coarse gauge machines (regardless of gauge, working width and number of systems) for intarsia knitting by simply slipping on the intarsia yarn feeders (option).
Knitting system control with flexible stitch and PTS
Dynamic tension setting with step motors. Extremely quick adjustment of stitch tension with PTS (Power Tension Setting). Several stitch tension values within one knitting row.
Large needle bed racking
The needle bed is equipped with a racking device with a maximum racking course of four inches and a programmable racking speed.
Main drive
Programmable speed with flexible speed adjustment using starting bar. Variable stroke with Power-RCR system (Rapid Carriage Return). Especially useful at short strokes for narrow garments, binding off and narrowing.
Online via Ethernet
With the Ethernet connection CMS-machines from the TC-generation can be connected to standard networks for fast transmission of large quantities of data.
Safety devices
Including fully enclosed and illuminated working area, CFC-protection system (carriage force control) and shock stop motion front/rear. Machine complies with EC-regulations (CE mark).
An individual user interface and intuitive menu guidance enables entering pattern changes easily and directly at the machine.
USB ports
Standardized and modern: Data input with USB stick.
(for CMS 502 HP+/CMS 502 HP+ multi gauge one USB port).
Yarn feeder
Up to 32 yarn feeders for machines with one carriage possible. Continuous monitoring of all yarn feeder positions avoids collisions.


text:
Denver's 25 best restaurants? 5280's list shakes things up
The Denver area's 25 best restaurants — according to 5280 food editor Amanda Faison, anyway — are named in the magazine's October issue. And, she says, the list is "Very much shaken up from 2012."
You'll have to pick up a copy to see all 25, but
here's a little teaser:
Bittersweet, where chef Olav Peterson turns out some amazing artisanal cuisine, weighs in at No. 5, a nice bit of upward mobility from 2012's No. 11.
Ogden Street gem Potager landed the No. 6 spot, up from last year's No. 19. Old Major, chef Justin Brunson's temple of seafood, swine and wine in the bustling LoHi neighborhood, debuts at No. 10 while Uptown hotspot Beast & Bottle makes its first appearance at No. 13.
Rioja, whose owner/chef Jennifer Jaskinski came really, really close to winning this season's Top Chef Masters, is back on the list, landing at spot No. 18. Last time Rioja was included was in 2011.
Faison prefaces her effort by noting: "After countless lunches, dinners, tens of thousands of calories and hours of careful deliberation and debate, our fourth annual ranking of the Denver area's best restaurants is complete. Dig in for a comprehensive, of-the-moment snapshot of the local dining scene."
Joanne Davidson: 303-809-1314, email@example.com and @GetItWrite on Twitter