Archive for June, 2008
In software engineering, the programming paradigms of aspect-oriented programming (AOP), and aspect-oriented software development (AOSD) attempt to aid programmers in the separation of concerns, specifically cross-cutting concerns, as an advance in modularization. AOP does so using primarily language changes, while AOSD uses a combination of language, environment, and method.
Separation of concerns entails breaking down a program into distinct parts that overlap in functionality as little as possible. All programming methodologies—including procedural programming and object-oriented programming—support some separation and encapsulation of concerns (or any area of interest or focus) into single entities. For example, procedures, packages, classes, and methods all help programmers encapsulate concerns into single entities. But some concerns defy these forms of encapsulation. Software engineers call these crosscutting concerns, because they “cut” across multiple modules in a program.
A plug-in (plugin, addin, add-in, addon, add-on or snap-in; but see extension) is a computer program that interacts with a host application (a web browser or an email client, for example) to provide a certain, usually very specific, function “on demand”. Applications support plugins for many reasons. Some of the main reasons include: enabling third-party developers to create capabilities to extend an application, to support features yet unforeseen, to reduce the size of an application, and to separate source code from an application because of incompatible software licenses.
Examples of applications and their plug-ins include:
- Email clients use plug-ins to decrypt and encrypt email (Pretty Good Privacy)
- Graphics software use plug-ins to support file formats and process images (Adobe Photoshop)
- Media players use plug-ins to support file formats and apply filters (foobar2000, GStreamer, Quintessential, VST, Winamp, XMMS)
- Packet sniffers use plug-ins to decode packet formats (OmniPeek)
- Remote sensing applications use plug-ins to process data from different sensor types (Opticks)
- Software development environments use plug-ins to support programming languages (Eclipse, jEdit, MonoDevelop)
- Web browsers use plug-ins to play video and presentation formats (Flash, QuickTime, Microsoft Silverlight, 3DMLW)
- Some digital mixing consoles allow plug-ins to extend features such as reverberation effects, equalization and compression.
Document Type Definition (DTD) is one of several SGML and XML schema languages, and is also the term used to describe a document or portion thereof that is authored in the DTD language. A DTD is primarily used for the expression of a schema via a set of declarations that conform to a particular markup syntax and that describe a class, or type, of document, in terms of constraints on the structure of that document. A DTD may also declare constructs that are not always required to establish document structure, but that may affect the interpretation of some documents. XML documents are described using a subset of DTD which imposes a number of restrictions on the document’s structure, as required per the XML standard (XML is in itself an application of SGML optimized for automated parsing).
Some of the new features in HTML 5 are functions for embedding audio, video and graphics, client-side data storage, and interactive documents. Other features are new page elements like <header>, <section>, <footer>, and <figure>.
HTML 5 improves interoperability and reduce development costs by making precise rules on how to handle all HTML elements, and how to recover from errors.
Dual licensed under the MIT License and the GNU General Public License, jQuery is free and open source software.
Back in May 2006, Sun announced during the JavaOne conference it would release Java as open source, licensed as GPL software. While it was released as GPL, it still contained about 5 percent proprietary, non-free code – the Java trap, as the FSF calls it. The FSF called to dismantle this trap, and now the IcedTea project has reached an important milestone.
The IcedTea project, launched by Red Hat, built on the foundations of the GNU Classpath project to replace the proprietary code in the OpenJDK.
Let me tell you a little about my experiences with TDD, how it’s added to the enjoyment I get from writing software, and how the quality of my source code has improved as a result.
To explain the basics of TDD to those who have never used it before, we should perhaps think about the traditional form of testing. Traditionally, the three stages of software development are Planning, Implementation, and Testing. A developer would spend roughly equal amounts of time on each of these steps. The problem here is that although the plans seem bulletproof and the code may not be too difficult to write, the testing just happens far too late in the game. Bug reports get back to the developer after the software is already built, but obviously, with nearing deadlines, this is far from an ideal situation.
It lets you simulate every major DOM event, as well as some combination events like Write and Drag, and then run functional and unit tests in a separate console window.
- Ajax – Updates content without refreshing the page.
- Class – An easy to use, lightweight class system.
- Event – Register events without worrying about memory issues.
- Inflector – Handy string helpers for pluralizing and singularizing strings.
- Helpers – String, Array, Function and Object extensions.
- Query – CSS DOM element selection.
- History – provides back, forward, and refresh functionality.
- Remote – perform cross domain reads and writes.
Ruby is a dynamic, reflective, general purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was initially developed and designed by Yukihiro “Matz” Matsumoto.
Ruby supports multiple programming paradigms, including functional, object oriented, imperative and reflection. It also has a dynamic type system and automatic memory management; it is therefore similar in varying respects to Python, Perl, Lisp, Dylan, and CLU.
In its current, official implementation, written in C, Ruby is a single-pass interpreted language. There is currently no specification of the Ruby language, so the original implementation is considered to be the de facto reference. As of 2008, there are a number of complete or upcoming alternative implementations of the Ruby language, including YARV, JRuby, Rubinius, IronRuby, and MacRuby, each of which takes a different approach, with JRuby and IronRuby providing just-in-time compilation functionality.