<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>IT PASSION - "IT professional Blog"</title>
	<atom:link href="http://mauriziostorani.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mauriziostorani.wordpress.com</link>
	<description>Information technologies with passion!</description>
	<lastBuildDate>Wed, 14 Dec 2011 16:26:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mauriziostorani.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>IT PASSION - "IT professional Blog"</title>
		<link>http://mauriziostorani.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mauriziostorani.wordpress.com/osd.xml" title="IT PASSION - &#34;IT professional Blog&#34;" />
	<atom:link rel='hub' href='http://mauriziostorani.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Revision control concepts &#8211; Revision Control System (RCS), Concurrent Versions System (CVS) and Subversion</title>
		<link>http://mauriziostorani.wordpress.com/2008/12/10/revision-control-concepts-revision-control-system-rcs-concurrent-versions-system-cvs-and-subversion/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/12/10/revision-control-concepts-revision-control-system-rcs-concurrent-versions-system-cvs-and-subversion/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 13:10:33 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[CVS]]></category>
		<category><![CDATA[Revision control]]></category>
		<category><![CDATA[Concurrent Versions System]]></category>
		<category><![CDATA[DCVS]]></category>
		<category><![CDATA[RCS]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=555</guid>
		<description><![CDATA[<strong><img class="alignleft size-medium wp-image-567" title="subversion-1" src="http://mauriziostorani.files.wordpress.com/2008/12/subversion-1.jpg?w=300" alt="" width="300" height="228" />Revision control</strong> (also known as <strong>version control (system) (VCS)</strong>, <strong>source control</strong> or <strong>(source) code management (SCM)</strong>) is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other projects that may be worked on by a <span class="mw-redirect">team of people</span>. Changes to these documents are usually identified by incrementing an associated number or letter code, termed the "revision number", "revision level", or simply "revision" and associated historically with the person making the change. A simple form of revision control, for example, has the initial issue of a drawing assigned the revision number "1". When the first change is made, the revision number is incremented to "2" and so on.

<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/12/10/revision-control-concepts-revision-control-system-rcs-concurrent-versions-system-cvs-and-subversion" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=555&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignleft size-medium wp-image-567" title="subversion-1" src="http://mauriziostorani.files.wordpress.com/2008/12/subversion-1.jpg?w=300&#038;h=228" alt="" width="300" height="228" />Revision control</strong> (also known as <strong>version control (system) (VCS)</strong>, <strong>source control</strong> or <strong>(source) code management (SCM)</strong>) is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other projects that may be worked on by a <span class="mw-redirect">team of people</span>. Changes to these documents are usually identified by incrementing an associated number or letter code, termed the &#8220;revision number&#8221;, &#8220;revision level&#8221;, or simply &#8220;revision&#8221; and associated historically with the person making the change. A simple form of revision control, for example, has the initial issue of a drawing assigned the revision number &#8220;1&#8243;. When the first change is made, the revision number is incremented to &#8220;2&#8243; and so on.</p>
<p>Version control systems are most commonly stand-alone applications, but revision control is also embedded in various types of software like word processors (e.g. Microsoft Word, OpenOffice.org Writer, KOffice, Pages, Google Docs), spreadsheets (e.g. OpenOffice.org Calc, <span class="mw-redirect">Google Spreadsheets</span>, Microsoft Excel), and in various content management systems. Integrated revision control is a key feature of wiki software packages such as MediaWiki, DokuWiki, TWiki, etc. In wikis, revision control allows for the ability to revert a page to a previous revision, which is critical for allowing editors to track each other&#8217;s edits, correct mistakes, and defend public wikis against vandalism and spam.</p>
<p>The <strong>Revision Control System</strong> (<strong>RCS</strong>) is a software implementation of revision control that automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, for example programs, documentation, procedural graphics, papers, and form letters. RCS is also capable of handling binary files, though with reduced efficiency and efficacy. Revisions are stored with the aid of the diff utility.</p>
<p>RCS was initially developed in the 1980s by Walter F. Tichy while he was at Purdue University as a free and more evolved alternative to the then-popular Source Code Control System (SCCS). It is now part of the GNU Project but is still maintained by Purdue University.</p>
<p>RCS operates only on single files, has no way of working with an entire project. Although it provides branching for individual files, the version syntax is cumbersome. Instead of using branches, many teams just use the built-in locking mechanism and work on a single <em>head</em> branch.</p>
<p>A simple system called CVS was developed capable of dealing with RCS files en masse, and this was the next natural step of evolution of this concept, as it “transcends but includes” elements of its predecessor. CVS was originally a set of scripts which used RCS programs to manage the files. It no longer does that, rather it operates directly on the files itself.</p>
<p>A later higher-level system PRCS<sup class="reference">[1]</sup> uses RCS-like files but was never simply a wrapper. In contrast to CVS, PRCS improves the delta compression of the RCS files using Xdelta.</p>
<p>In single-user scenarios, such as server configuration files or automation scripts, RCS may still be the preferred revision control tool as it is simple and no central repository needs to be accessible for it to save revisions. This makes it a more reliable tool when the system is in dire maintenance conditions. Additionally, the saved backup files are easily visible to the administration so the operation is straightforward. However, there are no built-in tamper protection mechanisms (that is, users who can use the RCS tools to version a file also, by design, are able to directly manipulate the corresponding version control file) and this is leading some security conscious administrators to consider client/server version control systems that restrict users&#8217; ability to alter the version control files.</p>
<p>Some wiki engines, including TWiki, use RCS for storing page revisions.</p>
<h3>Basics of RCS</h3>
<p>The Revision Control System (RCS) was designed by Walter Tichy of the Department of Computer Science at Purdue University.  RCS is a software tool  for UNIX systems which lets people working on the system control &#8220;multiple  revisions of text &#8230; that is revised frequently, such as programs or  documentation.&#8221; <a href="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/rcs/references.html">[TIC82] </a> It can be applied to development situations of all sorts, including the creation of documents, drawings, forms, articles, and of course, source code.</p>
<p>In a typical software development environment, many developers will be engaged in work on one code base.  If everyone was to be allowed to edit and modify any development item whenever they felt like it, it should  be obvious that chaos would tend to result while little productive work got done.  Instead of suffering under such an environment, most  developers prefer to implement <em>version control</em> tools such as the one described here.</p>
<p>Version control tools allow an individual developer to maintain control over an item such as a source file while they implement and test changes to it.  During this period, while the file is &#8220;checked out&#8221;, no one else is allowed to modify it.  When the developer is satisfied that the changes have been implemented successfully and that they broke nothing in the meantime, the file may be &#8220;checked in&#8221; to the baseline database for use by everyone.  The specifics of this process  for RCS will be discussed in the tutorial proper.</p>
<p>Earlier implementations of version control tools include AT&amp;T&#8217;s <em>SCCS</em>, IBM&#8217;s <em>CLEAR/CASTER</em>, and DEC&#8217;s <em>CMS</em>.  RCS, implemented in 1982, attempts to fix several shortcomings the author found in previous tools.</p>
<h2>What is CVS?</h2>
<p>CVS is a version control system.  Using it, you can record the history of your source files. For example, bugs sometimes creep in when software is modified, and you might not detect the bug until a long time after you make the modification. With CVS , you can easily retrieve old versions to see exactly which change caused the bug. This can sometimes be a big help.</p>
<p>You could, of course, save every version of every file you have ever created. This would, however, waste an enormous amount of disk space. CVS  stores all the versions of a file in a single file in a clever way that only stores the differences between versions. CVS also helps you if you are part of a group of people working on the same project. It is all too easy to overwrite each other&#8217;s changes unless you are extremely careful. Some editors, like GNU  Emacs, try to make sure that two people never modify the same file at the same time. Unfortunately, if someone is using another editor, that safeguard will not work. CVS  solves this problem by insulating the different developers from each other.  Every developer works in his own directory, and  CVS  merges the work when each developer is done. CVS started out as a bunch of shell scripts written by Dick Grune and posted to the newsgroup  <code>comp.sources.unix </code> in the volume 6 release of July 1986. While no actual code from these shell scripts is present in the current version of  CVS , many of the  CVS  conflict resolution algorithms come from them.</p>
<p>In April 1989, Brian Berliner designed and coded CVS . Jeff Polk later helped Brian with the design of the  CVS  module and vendor branch support.</p>
<h3><span class="mw-headline">Features</span></h3>
<p><strong>CVS</strong> uses a client-server architecture: a server stores the current version(s) of a project and its history, and clients connect to the server in order to &#8220;check out&#8221; a complete copy of the project, work on this copy and then later &#8220;check in&#8221; their changes. Typically, the client and server connect over a LAN or over the Internet, but client and server may both run on the same machine if CVS has the task of keeping track of the version history of a project with only local developers. The server software normally runs on Unix (although at least the CVSNT server supports various flavors of Microsoft Windows and Linux), while CVS clients may run on any major operating-system platform.</p>
<p>Several developers may work on the same project concurrently, each one editing files within their own &#8220;working copy&#8221; of the project, and sending (or <em>checking in</em>) their modifications to the server. To avoid the possibility of people stepping on each other&#8217;s toes, the server will only accept changes made to the most recent version of a file. Developers are therefore expected to keep their working copy up-to-date by incorporating other people&#8217;s changes on a regular basis. This task is mostly handled automatically by the CVS client, requiring manual intervention only when a <em>conflict</em> arises between a checked-in modification and the yet-unchecked local version of a file.</p>
<p>If the check-in operation succeeds, then the version numbers of all files involved automatically increment, and the CVS-server writes a user-supplied description line, the date and the author&#8217;s name to its log files. CVS can also run external, user-specified log processing scripts following each commit. These scripts are installed by an entry in CVS&#8217;s <tt>loginfo</tt> file, which can trigger email notification or convert the log data into a Web-based format.</p>
<p>Clients can also compare versions, request a complete history of changes, or check out a historical snapshot of the project as of a given date or as of a revision number. Many open-source projects allow &#8220;anonymous read access&#8221;, a feature pioneered by OpenBSD. This means that clients may check out and compare versions with either a blank or simple published password (e.g., &#8220;anoncvs&#8221;); only the check-in of changes requires a personal account and password in these scenarios.</p>
<p>Clients can also use the &#8220;update&#8221; command in order to bring their local copies up-to-date with the newest version on the server. This eliminates the need for repeated downloading of the whole project.</p>
<p>CVS can also maintain different &#8220;branches&#8221; of a project. For instance, a released version of the software project may form one branch, used for bug fixes, while a version under current development, with major changes and new features, can form a separate branch.</p>
<p>CVS uses <span class="mw-redirect">delta compression</span> for efficient storage of different versions of the same file. The implementation favors files with many lines (usually text files) &#8211; in extreme cases the system may store individual copies of each version rather than deltas.</p>
<h2>Distributed Concurrent Versions System</h2>
<div class="csc-header csc-header-n1">
<p class="bodytext"><strong>DCVS </strong>is the CVS-based versions control system for software development across physically distributed sites. It extends the programs CVS and CVSup with functionality to distribute CVS repositories with local lines of development and automatically handles the synchronization of the distributed repositories in the background. DCVS enables globally distributed developer teams to efficiently and securely collaborate with the same software product components. The DCVS concept of unique association of development lines prevents collisions and thus data loss.</p>
<p>Particularly DCVS provides for:</p>
</div>
<p><!--  Header: [end] --> <!--  Text: [begin] --> <!--  Text: [end] --><!--  CONTENT ELEMENT, uid:906/text [end] --><!--  CONTENT ELEMENT, uid:907/bullets [begin] --> <!--  Bullet list: [begin] --></p>
<ul class="csc-bulletlist csc-bulletlist-0">
<li>any desired number of programmers concurrently developing an arbitrary number of development lines in workspaces isolated from each other</li>
<li>worldwide and transparent distribution of repositories via secure connection; efficient replication and quick local server access for all operations</li>
<li>integration in nearly all current GUIs and IDEs through the use of the default CVS protocol between the CVS clients and DCVS servers</li>
<li>the functionality of snapshots replacing the more susceptible tags</li>
<li>the functionality of change sets as powerful means for structuring code development and release/change management</li>
<li>configurable e-mail notifications (add on)</li>
<li>hooks for process control</li>
<li>user control and authentication either by local system specific defaults or by distributed LDAP servers</li>
<li>installation packages for all popular operation systems</li>
</ul>
<h2><a href="http://www.oreillynet.com/pub/a/oreilly/opensource/news/subversion_ch02.html" target="_blank"> Version Control with Subversion</a></h2>
<p>Subversion is a free/open-source version control system.       That is, Subversion manages files and directories over time.  A       tree of files is placed into a central       <em class="firstterm">repository</em>.  The repository is much like       an ordinary file server, except that it remembers every change       ever made to your files and directories.  This allows you to       recover older versions of your data, or examine the history of       how your data changed.  In this regard, many people think of a       version control system as a sort of “<span class="quote">time       machine</span>”.</p>
<p>Subversion can access its repository across networks, which       allows it to be used by people on different computers.  At some       level, the ability for various people to modify and manage the       same set of data from their respective locations fosters       collaboration.  Progress can occur more quickly without a single       conduit through which all modifications must occur.  And because       the work is versioned, you need not fear that quality is the       trade-off for losing that conduit—if some incorrect change       is made to the data, just undo that change.</p>
<p>Some version control systems are also software configuration       management (SCM) systems.  These systems are specifically       tailored to manage trees of source code, and have many features       that are specific to software development—such as natively       understanding programming languages, or supplying tools for       building software.  Subversion, however, is not one of these       systems.  It is a general system that can be used to manage       <span class="emphasis"><em>any</em></span> collection of files.  For you, those       files might be source code—for others, anything from       grocery shopping lists to digital video mixdowns and       beyond.</p>
<p style="text-align:center;"><iframe src='http://www.slideshare.net/slideshow/embed_code/55133' width='425' height='348'></iframe></p>
<div class="sect1" lang="en">
<div class="titlepage">
<div>
<div>
<h3><a name="svn-ch-1-sect-2"></a>Subversion&#8217;s History</h3>
</div>
</div>
</div>
<p>In early 2000, CollabNet, Inc. (<tt class="systemitem">http://www.collab.net</tt>) began seeking       developers to write a replacement for CVS.  CollabNet offers a       collaboration software suite called SourceCast, of which one       component is version control.  Although SourceCast used CVS as       its initial version control system, CVS&#8217;s limitations were       obvious from the beginning, and CollabNet knew it would       eventually have to find something better.  Unfortunately, CVS       had become the <span class="foreignphrase"><em class="foreignphrase">de facto</em></span> standard       in the open source world largely because there       <span class="emphasis"><em>wasn&#8217;t</em></span> anything better, at least not under       a free license.  So CollabNet determined to write a new version       control system from scratch, retaining the basic ideas of CVS,       but without the bugs and misfeatures.</p>
<p>In February 2000, they contacted Karl Fogel, the author of       <em class="citetitle">Open Source Development with CVS</em> (Coriolis, 1999), and asked if he&#8217;d like to work on this new       project.  Coincidentally, at the time Karl was already       discussing a design for a new version control system with his       friend Jim Blandy.  In 1995, the two had started Cyclic       Software, a company providing CVS support contracts, and       although they later sold the business, they still used CVS every       day at their jobs.  Their frustration with CVS had led Jim to       think carefully about better ways to manage versioned data, and       he&#8217;d already come up with not only the name       “<span class="quote">Subversion</span>”, but also with the basic design of the       Subversion repository.  When CollabNet called, Karl immediately       agreed to work on the project, and Jim got his employer, RedHat       Software, to essentially donate him to the project for an       indefinite period of time.  CollabNet hired Karl and Ben       Collins-Sussman, and detailed design work began in May.  With       the help of some well-placed prods from Brian Behlendorf and       Jason Robbins of CollabNet, and Greg Stein (at the time an       independent developer active in the WebDAV/DeltaV specification       process), Subversion quickly attracted a community of active       developers.  It turned out that many people had had the same       frustrating experiences with CVS, and welcomed the chance to       finally do something about it.</p>
<p>The original design team settled on some simple goals.  They       didn&#8217;t want to break new ground in version control methodology,       they just wanted to fix CVS.  They decided that Subversion would       match CVS&#8217;s features, and preserve the same development model,       but not duplicate CVS&#8217;s most obvious flaws.  And although it did       not need to be a drop-in replacement for CVS, it should be       similar enough that any CVS user could make the switch with       little effort.</p>
<p>After fourteen months of coding, Subversion became       “<span class="quote">self-hosting</span>” on August 31, 2001.  That is,       Subversion developers stopped using CVS to manage Subversion&#8217;s       own source code, and started using Subversion instead.</p>
<p>While CollabNet started the project, and still funds a large       chunk of the work (it pays the salaries of a few full-time       Subversion developers), Subversion is run like most open-source       projects, governed by a loose, transparent set of rules that       encourage meritocracy.  CollabNet&#8217;s copyright license is fully       compliant with the Debian Free Software Guidelines.  In other       words, anyone is free to download, modify, and redistribute       Subversion as he pleases; no permission from CollabNet or anyone       else is required.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<div>
<div>
<h3><a name="svn-ch-1-sect-3"></a>Subversion&#8217;s Features</h3>
</div>
</div>
</div>
<p>When discussing the features that Subversion brings to the       version control table, it is often helpful to speak of them in       terms of how they improve upon CVS&#8217;s design.  If you&#8217;re not       familiar with CVS, you may not understand all of these features.       And if you&#8217;re not familiar with version control at all, your       eyes may glaze over unless you first read <a title="Chapter 2. Basic Concepts" href="http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-2" target="_blank">Chapter 2, <em>Basic Concepts</em></a>, in which we provide a gentle introduction       to version control in general.</p>
<p>Subversion provides:</p>
<div class="variablelist">
<dl>
<dt><strong><span class="term">Directory versioning</span></strong></dt>
<dd>CVS only tracks the history of individual files, but             Subversion implements a “<span class="quote">virtual</span>” versioned             filesystem that tracks changes to whole directory trees             over time.  Files <span class="emphasis"><em>and</em></span> directories are             versioned.</p>
</dd>
<dt><strong><span class="term">True version history</span></strong></dt>
<dd>Since CVS is limited to file versioning, operations             such as copies and renames—which might happen to             files, but which are really changes to the contents of             some containing directory—aren&#8217;t supported in CVS.             Additionally, in CVS you cannot replace a versioned file             with some new thing of the same name without the new item             inheriting the history of the old—perhaps completely             unrelated— file.  With Subversion, you can add,             delete, copy, and rename both files and directories.  And             every newly added file begins with a fresh, clean             history all its own.</p>
</dd>
<dt><strong><span class="term">Atomic commits</span></strong></dt>
<dd>A collection of modifications either goes into the             repository completely, or not at all.  This allows             developers to construct and commit changes as logical             chunks, and prevents problems that can occur when only a             portion of a set of changes is successfully sent to the             repository.</p>
</dd>
<dt><strong><span class="term">Versioned metadata</span></strong></dt>
<dd>Each file and directory has a set of             properties—keys and their values— associated             with it.  You can create and store any arbitrary key/value             pairs you wish.  Properties are versioned over time, just             like file contents.</p>
</dd>
<dt><strong><span class="term">Choice of network layers</span></strong></dt>
<dd>Subversion has an abstracted notion of repository             access, making it easy for people to implement new network             mechanisms.  Subversion can plug into the Apache HTTP             Server as an extension module.  This gives Subversion a             big advantage in stability and interoperability, and             instant access to existing features provided by that             server—authentication, authorization, wire             compression, and so on.  A more lightweight, standalone             Subversion server process is also available.  This server             speaks a custom protocol which can be easily tunneled over             SSH.</p>
</dd>
<dt><strong><span class="term">Consistent data handling</span></strong></dt>
<dd>Subversion expresses file differences using a binary             differencing algorithm, which works identically on both             text (human-readable) and binary (human-unreadable) files.             Both types of files are stored equally compressed in the             repository, and differences are transmitted in both             directions across the network.</p>
</dd>
<dt><strong><span class="term">Efficient branching and tagging</span></strong></dt>
<dd>The cost of branching and tagging need not be proportional to the             project size.  Subversion creates branches and tags by             simply copying the project, using a mechanism similar to a             hard-link.  Thus these operations take only a very small,             constant amount of time.</p>
</dd>
<dt><strong><span class="term">Hackability</span></strong></dt>
<dd>Subversion has no historical baggage; it is             implemented as a collection of shared C libraries with             well-defined APIs.  This makes Subversion extremely             maintainable and usable by other applications and             languages.</p>
</dd>
</dl>
</div>
<h2>Pros and Cons of Subversion over CVS</h2>
<p>This list is written from the point of view of Subversion. That is, everything labelled &#8220;<strong>pro</strong>&#8221; below is an advantage of Subversion over CVS, and everything labelled &#8220;<strong>con</strong>&#8221; is a disadvantage of Subversion.</p>
<ul>
<li>Most obvious change is of course the single revision number.
<ul>
<li><strong>pro</strong>: makes it easy to know what went into a build</li>
<li><strong>pro</strong>: largely removes the need for date-based checkouts, since remembering one revision number is even easier than remembering a date. Just arrange for the revision number to be embedded in every binary you build, and you&#8217;re done.</li>
</ul>
</li>
<li>The branching model is extremely different. In CVS, branches are represented as a fork in the time dimension; both branches of a file are seen at the same absolute pathname, and you switch between them by deciding which revision number branch you&#8217;re working on. In SVN, the time dimension is unbroken and linear; an SVN repository is simply an ordinary-looking file system seen at a number of snapshots throughout its history. Branches are not officially recognised by the software at all; to create a branch you just copy (say) the path &#8220;<code>/myproj</code>&#8221; to &#8220;<code>/myproj-branch</code>&#8221; and do further development by checking out from there instead (exactly as you might have done if you wanted to branch the software in the absence of any version control). SVN&#8217;s support for cheap file and directory copies makes this internally efficient, and the &#8220;<code>svn switch</code>&#8221; command is provided as a means of conveniently moving a single working copy directory between branches.
<ul>
<li><strong>pro</strong>: creating a branch is now a version-controlled operation, meaning you get to track who did it, when and why</li>
<li><strong>pro</strong>: &#8220;<code>svn ls</code>&#8221; can easily show you what branches exist and are active, which was always hard to keep track of in CVS</li>
<li><strong>pro</strong>: you can delete a branch when you&#8217;ve finished with it (although if anyone later needs to recover it, they can always do so by using &#8220;<code>svn cp</code>&#8221; from an earlier revision)</li>
<li><strong>con</strong>: the benefit of the single revision number is partially undone by this branching model, because to specify what files went into a build you now have to specify a pathname within the repository as well as the revision number. That said, at least you can do that at all – CVS didn&#8217;t even permit you to give a branch tag and a date tag together!</li>
<li><strong>con</strong>: there is no way to bring together all the various branched versions of a single source file, if (for example) you&#8217;re trying to remember <em>which</em> branch a particular change was made on. CVS didn&#8217;t exactly support this either, but it was at least practically feasible in some cases by grepping the <code>,v</code> file itself.</li>
<li><strong>con</strong>: it&#8217;s also rather heavyweight if you only wanted to branch one single file for some unofficial or private purpose.</li>
</ul>
</li>
<li>SVN stores a pristine copy of every checked-out source file on the client side, in a subdirectory of &#8220;<code>.svn</code>&#8220;.
<ul>
<li><strong>pro</strong>: this allows common operations such as &#8220;<code>svn status</code>&#8221; and some forms of &#8220;<code>svn diff</code>&#8221; to work entirely locally without needing to talk to the SVN server.</li>
<li><strong>con</strong>: but of course your working copies take up twice as much space. Where I work this is a significant issue, since we have so much source!</li>
<li><strong>con</strong>: also, if your working copies are stored on an NFS volume, you might not even save much time, since it doesn&#8217;t make much difference whether you&#8217;re comparing your working files with pristine copies on an NFS server or on an SVN server – the network RTT and transfer rate is the limiting factor either way. So if you use network file servers, you don&#8217;t even get much benefit in return for the space cost.</li>
<li><strong>con</strong>: recursive greps of source directories now turn up lots of bogus hits in &#8220;<code>.svn</code>&#8221; subdirectories. I don&#8217;t doubt that at some point someone will provide a recursive grep which leaves out <code>.svn</code> directories without having to be told to every time, but I haven&#8217;t seen it yet.</li>
<li><strong>pro</strong>: despite the large number of cons to go with the one pro, I will stress that the pro is a <em>big</em> pro in many circumstances and often outweighs all of the cons!</li>
<li><strong>pro</strong>: rumour has it that at some point the local pristine copies might become optional, allowing users to choose their own tradeoff between local storage and network utilisation</li>
</ul>
</li>
<li>improved security model as discussed at length in <a href="http://www.chiark.greenend.org.uk/%7Esgtatham/svn.html" target="_blank">my article</a>
<ul>
<li><strong>pro</strong>: even better still in SVN 1.3, with proper access control even in svnserve</li>
</ul>
</li>
<li>repository storage mechanism is totally different
<ul>
<li><strong>con</strong>: Berkeley DB format is a horrid mess, self-admittedly prone to corruption incidents requiring manual recovery, and IME terribly slow</li>
<li><strong>pro</strong>: fortunately, they saw the light and implemented fsfs, which is outstandingly cool and now also the default</li>
<li><strong>pro</strong>: fsfs is extremely friendly to incremental backup strategies</li>
<li><strong>pro</strong>: fsfs permits safe (race-condition-free) read-only access to a repository</li>
<li><strong>con</strong>: neither of SVN&#8217;s formats provides the simplicity of CVS&#8217;s from the point of view of someone poking around the on-disk repository by hand. Many functions not officially implemented in CVS could be worked around by hand-grepping – or occasionally hand-editing – the <code>,v</code> files. This is not feasible in SVN, so you&#8217;re stuck with only the repository search and manipulation tools provided. Fortunately, these are by and large good enough. (Also, CVS&#8217;s conceptually simple storage format was a large part of what made it hard to support file renames.)</li>
</ul>
</li>
<li>lots of small but important ways in which SVN has fixed CVS&#8217;s annoying brokennesses
<ul>
<li><strong>pro</strong>: genuinely atomic commits (CVS can fail part-way through, and also tags the various files in a single commit with independently generated timestamps, so that a date-based checkout can occasionally give you only half of a big change)</li>
<li><strong>pro</strong>: support for moving and renaming files</li>
<li><strong>pro</strong>: separate &#8220;<code>status</code>&#8221; from &#8220;<code>update</code>&#8221; command, so you can quickly see what you&#8217;ve changed locally without having to risk making a mess with conflict markers. &#8220;<code>cvs -n up</code>&#8221; would have done this too, but not so nicely, and nobody I know ever remembered to use it.</li>
<li><strong>pro</strong>: when conflicts do show up during &#8220;<code>svn update</code>&#8220;, all <em>three</em> versions of the file are preserved (the local version, the new remote version, and their common parent the old remote version), which is occasionally a lifesaver</li>
<li><strong>con</strong>: SVN will now not automatically cope once you&#8217;ve removed the conflict markers from a file. It will have marked the file as &#8220;conflicted&#8221; when it first displayed the C status, and when you&#8217;ve sorted it out you have to manually tell it &#8220;<code>resolved</code>&#8220;. OTOH, this could be seen as a pro, since CVS&#8217;s failure to track this allowed you to check in conflict markers by mistake.</li>
<li><strong>pro</strong>: the all-important &#8220;<code>revert</code>&#8221; command is something that it ought to have been a criminally culpable oversight to have left out of CVS, or at least to have <em>continued</em> to leave out of it after the first half-hour of use!</li>
</ul>
</li>
</ul>
<h2><span class="mw-headline">IDEs with support for CVS</span></h2>
<ul>
<li><a title="Emacs" href="http://en.wikipedia.org/wiki/Emacs">Emacs</a></li>
<li><a title="Anjuta" href="http://en.wikipedia.org/wiki/Anjuta">Anjuta</a></li>
<li><a title="Dev-C++" href="http://en.wikipedia.org/wiki/Dev-C%2B%2B">Dev-C++</a></li>
<li><a title="Eclipse (software)" href="http://en.wikipedia.org/wiki/Eclipse_%28software%29">Eclipse</a></li>
<li><a title="NetBeans" href="http://en.wikipedia.org/wiki/NetBeans">NetBeans</a></li>
<li><a title="IntelliJ IDEA" href="http://en.wikipedia.org/wiki/IntelliJ_IDEA">IntelliJ IDEA</a></li>
<li><a title="WxDev-C++" href="http://en.wikipedia.org/wiki/WxDev-C%2B%2B">wxDev-C++</a></li>
<li><a title="KDevelop" href="http://en.wikipedia.org/wiki/KDevelop">KDevelop</a></li>
<li><a class="new" title="Aqualogic (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Aqualogic&amp;action=edit&amp;redlink=1">Aqualogic</a></li>
<li><a title="Xcode" href="http://en.wikipedia.org/wiki/Xcode">Xcode</a></li>
<li><a class="new" title="PhpED (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=PhpED&amp;action=edit&amp;redlink=1">PhpED</a></li>
</ul>
<h2><span class="mw-headline">IDEs with support for </span>Subversion</h2>
<p>List of <span class="mw-redirect">Integrated Development Environments</span> (IDEs), which support or can be integrated with Subversion:</p>
<ul>
<li><a title="Coda" href="http://en.wikipedia.org/wiki/Coda">Panic&#8217;s Coda</a> — As of version 1.5, Coda has integrated Subversion support!</li>
<li><a title="SlickEdit" href="http://en.wikipedia.org/wiki/SlickEdit">SlickEdit</a></li>
<li><a title="IntelliJ IDEA" href="http://en.wikipedia.org/wiki/IntelliJ_IDEA">IntelliJ IDEA</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-0">[1]</a></sup></li>
<li><a title="Xcode" href="http://en.wikipedia.org/wiki/Xcode">Xcode</a> — Apple&#8217;s Mac OS X IDE</li>
<li><a title="Microsoft Visual Studio" href="http://en.wikipedia.org/wiki/Microsoft_Visual_Studio">Microsoft Visual Studio</a>
<ul>
<li><a title="AnkhSVN" href="http://en.wikipedia.org/wiki/AnkhSVN">AnkhSVN</a> — a Visual Studio .NET addin. It allows to perform the most common Subversion operations from directly inside the VS.NET IDE</li>
<li><a title="VisualSVN" href="http://en.wikipedia.org/wiki/VisualSVN">VisualSVN</a> — simple and reliable Subversion integration for Visual Studio 2003 and 2005<sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-1"></a></sup></li>
<li>PushOk SVN SCC PlugIn<sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-2">[3]</a></sup> — another Visual Studio addin.</li>
</ul>
</li>
<li><a class="mw-redirect" title="Borland Delphi" href="http://en.wikipedia.org/wiki/Borland_Delphi">Borland Delphi</a>
<ul>
<li><a class="external text" title="http://delphisvn.sourceforge.net/" rel="nofollow" href="http://delphisvn.sourceforge.net/">DelphiSVN</a> — Subversion integration for Borland Delphi</li>
</ul>
</li>
<li><a title="Eclipse (software)" href="http://en.wikipedia.org/wiki/Eclipse_%28software%29">Eclipse</a>
<ul>
<li>Aptana<sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-3"></a></sup></li>
<li>Subclipse — an open source project that integrates Subversion into Eclipse IDE<sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-4"></a></sup></li>
<li>Subversive — SVN Team Provider is an <a title="List of Eclipse projects" href="http://en.wikipedia.org/wiki/List_of_Eclipse_projects">Eclipse project</a> aimed at providing <a title="Subversion (software)" href="http://en.wikipedia.org/wiki/Subversion_%28software%29">Subversion</a> support in <a title="Eclipse (software)" href="http://en.wikipedia.org/wiki/Eclipse_%28software%29">Eclipse</a> similar to that previously provided for <a title="Concurrent Versions System" href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>.<sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-5"></a></sup></li>
<li>EasyEclipse — a software bundle that packages Eclipse and several other plug-ins and tools into a single installer. One of the Eclipse plug-ins included in this bundle is a Subversion plug-in<sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-6"></a></sup></li>
</ul>
</li>
<li><a title="Zend Studio" href="http://en.wikipedia.org/wiki/Zend_Studio">Zend Studio</a></li>
<li><a title="KDevelop" href="http://en.wikipedia.org/wiki/KDevelop">KDevelop</a></li>
<li><a title="Emacs" href="http://en.wikipedia.org/wiki/Emacs">Emacs</a></li>
<li><a title="Vim (text editor)" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29">Vim</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-7"></a></sup></li>
<li><a title="NetBeans" href="http://en.wikipedia.org/wiki/NetBeans">NetBeans</a><sup class="reference"><a href="http://en.wikipedia.org/wiki/Software_that_uses_Subversion#cite_note-8"></a></sup></li>
<li><a title="JDeveloper" href="http://en.wikipedia.org/wiki/JDeveloper">JDeveloper</a></li>
<li><a title="Eric Python IDE" href="http://en.wikipedia.org/wiki/Eric_Python_IDE">Eric Python IDE</a></li>
<li><a title="ActiveState Komodo" href="http://en.wikipedia.org/wiki/ActiveState_Komodo">ActiveState Komodo</a></li>
<li><a title="BBEdit" href="http://en.wikipedia.org/wiki/BBEdit">BBEdit</a> — <a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a>-based text editor that interfaces with Subversion (among other <a title="Configuration management" href="http://en.wikipedia.org/wiki/Configuration_management">version control</a> tools)</li>
<li><a class="mw-redirect" title="UEStudio" href="http://en.wikipedia.org/wiki/UEStudio">UEStudio</a> — lightweight IDE</li>
<li><a title="SharpDevelop" href="http://en.wikipedia.org/wiki/SharpDevelop">SharpDevelop</a> — free IDE for C#, VB.NET and Boo projects on Microsoft&#8217;s .NET platform.</li>
<li><a title="TextMate" href="http://en.wikipedia.org/wiki/TextMate">TextMate</a> — an extensible editor for Mac OS X</li>
<li><a class="mw-redirect" title="Dreamweaver" href="http://en.wikipedia.org/wiki/Dreamweaver">Dreamweaver</a> version CS4 now includes support for Subversion. Previous versions did not offer support.
<ul>
<li><a class="external text" title="http://code.google.com/p/subweaver/" rel="nofollow" href="http://code.google.com/p/subweaver/">Subweaver</a> — a Dreamweaver extension that integrates SVN commands by interacting with a TortoiseSVN installation</li>
</ul>
</li>
</ul>
<h2>Comparison of revision control software</h2>
<p><strong>From Wikipedia, the free encyclopedia</strong></p>
<div id="jump-to-nav"><a href="http://en.wikipedia.org/wiki/Comparison_of_revision_control_software#searchInput"></a></div>
<p><!-- start content -->The following tables compare general and technical information for notable revision control and software configuration management (SCM) <span class="mw-redirect">software</span>. This article is not all-inclusive and may become out of date quickly.</p>
<p>(<a href="http://en.wikipedia.org/wiki/Comparison_of_revision_control_software" target="_blank">more</a>)</p>
</div>
<p style="text-align:right;"><em>[wikipedia.org]<br />
[http://ximbiot.com]<br />
[http://tartarus.org/~simon]<br />
[http://www.oreillynet.com/pub/a/oreilly/opensource/news/subversion_ch02.html]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/12/10/revision-control-concepts-revision-control-system-rcs-concurrent-versions-system-cvs-and-subversion" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /> Tagged: Concurrent Versions System, CVS, DCVS, RCS, Revision control, Subversion, VCS <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/555/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=555&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/12/10/revision-control-concepts-revision-control-system-rcs-concurrent-versions-system-cvs-and-subversion/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://mauriziostorani.files.wordpress.com/2008/12/subversion-1.jpg?w=300" medium="image">
			<media:title type="html">subversion-1</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>Enterprise resource planning (ERP) &#8211; Concepts, Methods and Frameworks</title>
		<link>http://mauriziostorani.wordpress.com/2008/12/06/enterprise-resource-planning-erp-concepts-methods-and-frameworks/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/12/06/enterprise-resource-planning-erp-concepts-methods-and-frameworks/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 13:48:19 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Customer Relationship Management]]></category>
		<category><![CDATA[Enterprise Resource Planning]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[SAP]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=548</guid>
		<description><![CDATA[<strong><img class="alignleft" style="margin:3px 8px;" title="ERP Image" src="http://www.michaelegbertconsulting.com/Images/Hand.jpg" alt="ERP Image" width="276" height="283" />Enterprise resource planning</strong> (<strong>ERP</strong>) is an enterprise-wide information system designed to coordinate all the resources, information, and activities needed to complete business processes such as order fulfillment or billing.

An ERP system supports most of the business system that maintains in a single database the data needed for a variety of business functions such as Manufacturing, Supply Chain Management, Financials, Projects, Human Resources and Customer Relationship Management.

An ERP system is based on a common database and a modular software design. The common database can allow every department of a business to store and retrieve information in real-time. The information should be reliable, accessible, and easily shared. The modular software design should mean a business can select the modules they need, mix and match modules from different vendors, and add new modules of their own to improve business performance.

<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/12/06/enterprise-resource-planning-erp-concepts-methods-and-frameworks" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=548&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignleft" style="margin:3px 8px;" title="ERP Image" src="http://www.michaelegbertconsulting.com/Images/Hand.jpg" alt="ERP Image" width="276" height="283" />Enterprise resource planning</strong> (<strong>ERP</strong>) is an enterprise-wide information system designed to coordinate all the resources, information, and activities needed to complete business processes such as order fulfillment or billing.</p>
<p>An ERP system supports most of the business system that maintains in a single database the data needed for a variety of business functions such as Manufacturing, Supply Chain Management, Financials, Projects, Human Resources and Customer Relationship Management.</p>
<p>An ERP system is based on a common database and a modular software design. The common database can allow every department of a business to store and retrieve information in real-time. The information should be reliable, accessible, and easily shared. The modular software design should mean a business can select the modules they need, mix and match modules from different vendors, and add new modules of their own to improve business performance.</p>
<p>Ideally, the data for the various business functions are integrated. In practice the ERP system may comprise a set of discrete applications, each maintaining a discrete data store within one physical database.</p>
<p>The term ERP originally referred to how a large organization planned to use organizational wide resources. In the past, ERP systems were used in larger more industrial types of companies. However, the use of ERP has changed and is extremely comprehensive, today the term can refer to any type of company, no matter what industry it falls in. In fact, ERP systems are used in almost any type of organization &#8211; large or small.</p>
<p>In order for a software system to be considered ERP, it must provide an organization with functionality for two or more systems. While some ERP packages exist that only cover two functions for an organization (QuickBooks: Payroll &amp; Accounting), most ERP systems cover several functions.</p>
<p>Today&#8217;s ERP systems can cover a wide range of functions and integrate them into one unified database. For instance, functions such as Human Resources, Supply Chain Management, Customer Relations Management, Financials, Manufacturing functions and Warehouse Management functions were all once stand alone software applications, usually housed with their own database and network, today, they can all fit under one umbrella &#8211; the <strong>ERP system</strong>.</p>
<h2 style="text-align:center;">ERP &#8211; Implementation is The Challenge</h2>
<p style="text-align:center;"><iframe src='http://www.slideshare.net/slideshow/embed_code/18939' width='425' height='348'></iframe></p>
<h2>The Ideal ERP System</h2>
<p>An ideal ERP system is when a single database is utilized and contains all data for various software modules. These software modules can include:</p>
<p><strong>Manufacturing:</strong> Some of the functions include; engineering, capacity, workflow management, quality control, bills of material, manufacturing process, etc.</p>
<p><strong>Financials:</strong> Accounts payable, accounts receivable, fixed assets, general ledger and cash management, etc.</p>
<p><strong>Human Resources:</strong> Benefits, training, payroll, time and attendance, etc</p>
<p><strong>Supply Chain Management:</strong> Inventory, supply chain planning, supplier scheduling, claim processing, order entry, purchasing, etc.</p>
<p><strong>Projects:</strong> Costing, billing, activity management, time and expense, etc.</p>
<p><strong>Customer relationship management</strong> (<strong>CRM</strong>):  CRM is a term applied to processes implemented by a company to handle its contact with its customers. CRM software is used to support these processes, storing information on current and prospective customers. Information in the system can be accessed and entered by employees in different departments, such as sales, marketing, customer service, training, professional development, performance management, <span class="mw-redirect">human resource development</span>, and compensation. Details on any customer contacts can also be stored in the system. The rationale behind this approach is to improve services provided directly to customers and to use the information in the system for targeted marketing. While the term is generally used to refer to a software-based approach to handling customer relationships, most CRM software vendors stress that a successful CRM strategy requires a <span class="mw-redirect">holistic</span> approach. CRM initiatives often fail because implementation was limited to software installation without providing the appropriate motivations for employees to learn, provide input, and take full advantage of the information systems.</p>
<p><strong>Data Warehouse:</strong> Usually this is a module that can be accessed by an organizations customers, suppliers and employees.<strong> </strong>Data warehouse is a repository of an organization&#8217;s electronically stored data. Data warehouses are designed to facilitate reporting and analysis. This classic definition of the data warehouse focuses on data storage. However, the means to retrieve and analyze data, to extract, transform and load data, and to manage the data dictionary are also considered essential components of a data warehousing system. Many references to data warehousing use this broader context. Thus, an expanded definition for data warehousing includes business intelligence tools, tools to extract, transform, and load data into the repository, and tools to manage and retrieve metadata. In contrast to data warehouses are operational systems which perform day-to-day transaction processing. The process of transforming data into information and making it available to the user in a timely enough manner to make a difference is known as data warehousing.</p>
<h2>How can ERP improve a company’s business performance?</h2>
<p>ERP’s best hope for demonstrating value is as a sort of battering ram for improving the way your company takes a customer order and processes it into an invoice and revenue—otherwise known as the order fulfillment process. That is why ERP is often referred to as back-office software. It doesn’t handle the up-front selling process (although most ERP vendors have developed CRM software or acquired pure-play CRM providers that can do this); rather, ERP takes a customer order and provides a software road map for automating the different steps along the path to fulfilling it. When a customer service representative enters a customer order into an ERP system, he has all the information necessary to complete the order (the customer’s credit rating and order history from the finance module, the company’s inventory levels from the warehouse module and the shipping dock’s trucking schedule from the logistics module, for example).</p>
<p>People in these different departments all see the same information and can update it. When one department finishes with the order it is automatically routed via the ERP system to the next department. To find out where the order is at any point, you need only log in to the ERP system and track it down. With luck, the order process moves like a bolt of lightning through the organization, and customers get their orders faster and with fewer errors than before. ERP can apply that same magic to the other major business processes, such as employee benefits or financial reporting.</p>
<p>That, at least, is the dream of ERP. The reality is much harsher.</p>
<p>Let’s go back to those inboxes for a minute. That process may not have been efficient, but it was simple. Finance did its job, the warehouse did its job, and if anything went wrong outside of the department’s walls, it was somebody else’s problem. Not anymore. With ERP, the customer service representatives are no longer just typists entering someone’s name into a computer and hitting the return key. The ERP screen makes them businesspeople. It flickers with the customer’s credit rating from the finance department and the product inventory levels from the warehouse. Will the customer pay on time? Will we be able to ship the order on time? These are decisions that customer service representatives have never had to make before, and the answers affect the customer and every other department in the company. But it’s not just the customer service representatives who have to wake up. People in the warehouse who used to keep inventory in their heads or on scraps of paper now need to put that information online. If they don’t, customer service reps will see low inventory levels on their screens and tell customers that their requested item is not in stock. Accountability, responsibility and communication have never been tested like this before.</p>
<p>People don’t like to change, and ERP asks them to change how they do their jobs. That is why the value of ERP is so hard to pin down. The software is less important than the changes companies make in the ways they do business. If you use ERP to improve the ways your people take orders, manufacture goods, ship them and bill for them, you will see value from the software. If you simply install the software without changing the ways people do their jobs, you may not see any value at all—indeed, the new software could slow you down by simply replacing the old software that everyone knew with new software that no one does.</p>
<h2>Implementation of an ERP System</h2>
<p>Implementing an ERP system is not an easy task to achieve, in fact it takes lots of planning, consulting and in most cases 3 months to 1 year +. ERP systems are extraordinary wide in scope and for many larger organizations can be extremely complex. Implementing an ERP system will ultimately require significant changes on staff and work practices. While it may seem reasonable for an in house IT staff to head the project, it is widely advised that ERP implementation consultants be used, due to the fact that consultants are usually more cost effective and are specifically trained in implementing these types of systems.</p>
<p>One of the most important traits that an organization should have when implementing an ERP system is ownership of the project. Because so many changes take place and its broad effect on almost every individual in the organization, it is important to make sure that everyone is on board and will help make the project and using the new ERP system a success.</p>
<p>Usually organizations use ERP vendors or consulting companies to implement their customized ERP system. There are three types of professional services that are provided when implementing an ERP system, they are Consulting, Customization and Support.</p>
<p>Consulting Services &#8211; usually consulting services are responsible for the initial stages of ERP implementation, they help an organization go live with their new system, with product training, workflow, improve ERP&#8217;s use in the specific organization, etc.</p>
<p>Customization Services &#8211; Customization services work by extending the use of the new ERP system or changing its use by creating customized interfaces and/or underlying application code. While ERP systems are made for many core routines, there are still some needs that need to be built or customized for an organization.</p>
<p>Support Services- Support services include both support and maintenance of ERP systems. For instance, trouble shooting and assistance with ERP issues.</p>
<h2>Advantages of ERP Systems</h2>
<p>There are many advantages of implementing an EPR system; here are a few of them:</p>
<ul>
<li>A totally integrated system</li>
<li>The ability to streamline different processes and workflows</li>
<li>The ability to easily share data across various departments in an organization</li>
<li>Improved efficiency and productivity levels</li>
<li>Better tracking and forecasting</li>
<li>Lower costs</li>
<li>Improved customer service</li>
</ul>
<h2>Disadvantages of ERP Systems</h2>
<p>While advantages usually outweigh disadvantages for most organizations implementing an ERP system, here are some of the most common obstacles experienced:</p>
<p>Usually many obstacles can be prevented if adequate investment is made and adequate training is involved, however, success does depend on skills and the experience of the workforce to quickly adapt to the new system.</p>
<ul>
<li>Customization in many situations is limited</li>
<li>The need to reengineer business processes</li>
<li>ERP systems can be cost prohibitive to install and run</li>
<li>Technical support can be shoddy</li>
<li>ERP&#8217;s may be too rigid for specific organizations that are either new or want to move in a new direction in the near future.</li>
</ul>
<h2 style="text-align:center;">ERP Implementation Life Cycle</h2>
<p style="text-align:center;"><span class="artTitle"><iframe src='http://www.slideshare.net/slideshow/embed_code/337930' width='425' height='348'></iframe></span></p>
<h2><span class="mw-headline">Free and Open Source ERP software</span></h2>
<ul>
<li><a title="Adempiere" href="http://en.wikipedia.org/wiki/Adempiere" target="_blank">Adempiere</a>, a Java based ERP-System which started as a fork of Compiere</li>
<li><a title="Compiere" href="http://en.wikipedia.org/wiki/Compiere">Compiere</a>, a Java based ERP-System</li>
<li><a title="Dolibarr" href="http://en.wikipedia.org/wiki/Dolibarr">Dolibarr</a>, a PHP based ERP system</li>
<li><a title="ERP5" href="http://en.wikipedia.org/wiki/ERP5">ERP5</a>, a Python based ERP system</li>
<li><a title="GNU Enterprise" href="http://en.wikipedia.org/wiki/GNU_Enterprise">GNU Enterprise</a></li>
<li><a title="GRR (software)" href="http://en.wikipedia.org/wiki/GRR_%28software%29">GRR (software)</a>, a PHP/MySQL -based, web-accessed free ERP system</li>
<li><a title="JFire" href="http://en.wikipedia.org/wiki/JFire">JFire</a>, a Java based ERP-System from <a class="new" title="NightLabs (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=NightLabs&amp;action=edit&amp;redlink=1">NightLabs</a></li>
<li><a title="Kuali Foundation" href="http://en.wikipedia.org/wiki/Kuali_Foundation">Kuali Foundation</a></li>
<li><a title="LedgerSMB" href="http://en.wikipedia.org/wiki/LedgerSMB">LedgerSMB</a></li>
<li><a class="mw-redirect" title="OFBiz" href="http://en.wikipedia.org/wiki/OFBiz">OFBiz</a></li>
<li><a title="OpenBlueLab" href="http://en.wikipedia.org/wiki/OpenBlueLab">OpenBlueLab</a></li>
<li><a title="Openbravo" href="http://en.wikipedia.org/wiki/Openbravo">Openbravo</a>, a Java based ERP-System</li>
<li><a title="OpenERP" href="http://en.wikipedia.org/wiki/OpenERP">OpenERP</a> (formerly Tiny ERP)</li>
<li><a title="Opentaps" href="http://en.wikipedia.org/wiki/Opentaps">Opentaps</a> (Java based)</li>
<li><a title="OrangeHRM" href="http://en.wikipedia.org/wiki/OrangeHRM">OrangeHRM</a></li>
<li><a title="Postbooks" href="http://en.wikipedia.org/wiki/Postbooks">Postbooks</a> from <a title="XTuple" href="http://en.wikipedia.org/wiki/XTuple">XTuple</a></li>
<li><a title="SQL-Ledger" href="http://en.wikipedia.org/wiki/SQL-Ledger">SQL-Ledger</a></li>
<li><a title="Stoq" href="http://en.wikipedia.org/wiki/Stoq">Stoq</a></li>
<li><a title="WebERP" href="http://en.wikipedia.org/wiki/WebERP">WebERP</a></li>
</ul>
<p style="text-align:right;"><em>[wikipedia.org]<br />
[tech-faq.com]<br />
[www.cio.com]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/12/06/enterprise-resource-planning-erp-concepts-methods-and-frameworks" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /> Tagged: CRM, Customer Relationship Management, Enterprise Resource Planning, ERP, SAP <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/548/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/548/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/548/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=548&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/12/06/enterprise-resource-planning-erp-concepts-methods-and-frameworks/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://www.michaelegbertconsulting.com/Images/Hand.jpg" medium="image">
			<media:title type="html">ERP Image</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>Se-Radio.net: Bran Selic on UML 2</title>
		<link>http://mauriziostorani.wordpress.com/2008/11/19/se-radionet-bran-selic-on-uml-2/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/11/19/se-radionet-bran-selic-on-uml-2/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 10:53:05 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[Modelling]]></category>
		<category><![CDATA[se-radio.net]]></category>
		<category><![CDATA[SERadio interview]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Bran Selic]]></category>
		<category><![CDATA[SE Radio]]></category>
		<category><![CDATA[Unified Modeling Language]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=506</guid>
		<description><![CDATA[<img class="alignleft" style="margin:3px 8px;" title="UML logo" src="http://www.ibm.com/developerworks/cn/i/UML_logo.gif" alt="UML logo" width="294" height="209" />The Unified Modeling Language (UML) is a graphical language for visualizing, specifying and constructing the artifacts of a software-intensive system. The Unified Modeling Language offers a standard way to write a system's blueprints, including conceptual things such as business processes and system functions as well as concrete things such as programming language statements, database schemas, and reusable software components. UML combines the best practice from data modeling concepts such as <span class="mw-redirect">entity relationship diagrams</span>, <span class="mw-redirect">business modeling</span> (work flow), <span class="mw-redirect">object modeling</span> and component modeling. It can be used with all processes, throughout the <span class="mw-redirect">software development life cycle</span>, and across different implementation technologies.

<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/11/19/se-radionet-bran-selic-on-uml-2" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=506&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin:3px 8px;" title="UML logo" src="http://www.ibm.com/developerworks/cn/i/UML_logo.gif" alt="UML logo" width="294" height="209" />The Unified Modeling Language (UML) is a graphical language for visualizing, specifying and constructing the artifacts of a software-intensive system. The Unified Modeling Language offers a standard way to write a system&#8217;s blueprints, including conceptual things such as business processes and system functions as well as concrete things such as programming language statements, database schemas, and reusable software components. UML combines the best practice from data modeling concepts such as <span class="mw-redirect">entity relationship diagrams</span>, <span class="mw-redirect">business modeling</span> (work flow), <span class="mw-redirect">object modeling</span> and component modeling. It can be used with all processes, throughout the <span class="mw-redirect">software development life cycle</span>, and across different implementation technologies.</p>
<dl>
<dt><strong>Standardization</strong></dt>
</dl>
<p>UML is officially defined by the Object Management Group (OMG) as the <span class="new">UML metamodel</span>, a Meta-Object Facility metamodel (MOF). Like other MOF-based specifications, UML has allowed software developers to concentrate more on design and architecture.<sup class="reference"><span>[</span>1<span>]</span></sup></p>
<p>UML models may be automatically transformed to other representations (e.g. Java) by means of QVT-like transformation languages, supported by the OMG.</p>
<dl>
<dt><strong>Extensible Mechanisms</strong></dt>
</dl>
<p>UML is extensible, offering the following mechanisms for customization: profiles and <span class="mw-redirect">stereotype</span>. The semantics of <em>extension by profiles</em> have been improved with the UML 1.0 major revision.</p>
<p>UML has matured significantly since UML 1.1. Several minor revisions (UML 1.3, 1.4, and 1.5) fixed shortcomings and bugs with the first version of UML, followed by the UML 2.0 major revision that was adopted by the OMG in 2003. There are four parts to the UML 2.x specification: the Superstructure that defines the notation and semantics for diagrams and their model elements; the Infrastructure that defines the core metamodel on which the Superstructure is based; the Object Constraint Language (OCL) for defining rules for model elements; and the UML Diagram Interchange that defines how UML 2 diagram layouts are exchanged. The current versions of these standards follow: UML Superstructure version 2.1.2, UML Infrastructure version 2.1.2, OCL version 2.0, and UML Diagram Interchange version 1.0<sup class="reference"><span>[</span>4<span>]</span></sup>.</p>
<p>Although many UML tools support some of the new features of UML 2.x, the OMG provides no test suite to objectively test compliance with its specifications.</p>
<h2><span class="mw-headline">Diagrams overview</span></h2>
<p>UML 2.0 has 13 types of diagrams divided into three categories: Six diagram types represent <em>static</em> application structure, three represent general types of <em>behavior</em>, and four represent different aspects of <em>interactions</em>. These diagrams can be categorized hierarchically as shown in the following Class diagram:</p>
<div class="center">
<div class="floatnone" style="text-align:center;"><a title="Hierarchy of UML 2.0 Diagrams, shown as a class diagram" href="http://en.wikipedia.org/wiki/Image:Uml_diagram.svg" target="_blank"><img class="aligncenter" style="border:0 none;" src="http://upload.wikimedia.org/wikipedia/en/thumb/7/74/Uml_diagram.svg/750px-Uml_diagram.svg.png" border="0" alt="Hierarchy of UML 2.0 Diagrams, shown as a class diagram" width="420" height="210" /></a></div>
</div>
<p>UML does not restrict UML element types to a certain diagram type. In general, every UML element may appear on almost all types of diagrams. This flexibility has been partially restricted in UML 2.0.</p>
<p>In keeping with the tradition of engineering drawings, a comment or note explaining usage, constraint, or intent is always allowed in a UML diagram.</p>
<h2><a name="N100A4"><span class="atitle">The highlights of UML 2.0 functionality</span></a></h2>
<p>The new developments in UML 2.0 can be grouped into the following five major categories, listed in order of significance:</p>
<ul>
<li><strong>A significantly increased degree of precision in the definition of the language</strong>: This is a result of the need to support the higher levels of automation required for MDD. Automation implies the elimination of ambiguity and imprecision from models (and, hence, from the modeling language) so that computer programs can transform and manipulate models.</li>
<li><strong>An improved language organization</strong>: This is characterized by a modularity that not only makes the language more approachable to new users, but also facilitates inter-working between tools.</li>
<li><strong>Significant improvements in the ability to model large-scale software systems</strong>: Some modern software applications represent integrations of existing stand-alone applications into more complex systems of systems. This is a trend which will likely continue resulting in ever more complex systems. To support such trends, flexible new hierarchical capabilities were added to the language to support software modeling at arbitrary levels of complexity.</li>
<li><strong>Improved support for domain-specific specialization</strong>: Practical experience with UML demonstrated the value of its so-called &#8220;extension&#8221; mechanisms. These were consolidated and refined to allow simpler and more precise refinements of the base language.</li>
<li><strong>Overall consolidation, rationalization, and clarifications of various modeling concepts</strong>: This resulted in a simplified and more consistent language. It involved consolidation and &#8212; in a few cases &#8212; removing redundant concepts, refining numerous definitions, and adding textual clarifications and examples.</li>
</ul>
<h2><a href="http://www.se-radio.net/podcast/2008-11/episode-117-bran-selic-uml" target="_blank">Se-Radio.net </a><a href="http://www.se-radio.net/podcast/2008-11/episode-117-bran-selic-uml" target="_blank">interview Bran Selic on UML</a></h2>
<p>In this episode we&#8217;re talking to Bran Selic of Malina Software about modelling in general and UML2 in particular. Bran covers the basics of modelling, the history of UML, and what&#8217;s new in UML2.</p>
<p><strong>Host(s): </strong> Laurence</p>
<p><strong>Guest(s): </strong>Bran Selic</p>
<span style='text-align:left;display:block;'><p><object type='application/x-shockwave-flash' data='http://s0.wp.com/wp-content/plugins/audio-player/player.swf' width='290' height='24' id='audioplayer1'><param name='movie' value='http://s0.wp.com/wp-content/plugins/audio-player/player.swf' /><param name='FlashVars' value='&amp;bg=0xf8f8f8&amp;leftbg=0xeeeeee&amp;lefticon=0x666666&amp;rightbg=0xcccccc&amp;rightbghover=0x999999&amp;righticon=0x666666&amp;righticonhover=0xffffff&amp;text=0x666666&amp;slider=0x666666&amp;track=0xFFFFFF&amp;border=0x666666&amp;loader=0x9FFFB8&amp;soundFile=http%3A%2F%2Fmedia.libsyn.com%2Fmedia%2Fseradio%2Fseradio-episode117-branSelicOnUML.mp3' /><param name='quality' value='high' /><param name='menu' value='false' /><param name='bgcolor' value='#FFFFFF' /><param name='wmode' value='opaque' /></object></p></span>
<h1></h1>
<p style="text-align:right;"><em>[wikipedia.org]<br />
[http://www.ibm.com/developerworks]<br />
[http://www.se-radio.net]</em></p>
<p style="text-align:right;"><em><br />
</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/11/19/se-radionet-bran-selic-on-uml-2" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /> Tagged: Bran Selic, Modelling, SE Radio, UML, Unified Modeling Language <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/506/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/506/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/506/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=506&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/11/19/se-radionet-bran-selic-on-uml-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://media.libsyn.com/media/seradio/seradio-episode117-branSelicOnUML.mp3" length="64756968" type="audio/mpeg" />
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://www.ibm.com/developerworks/cn/i/UML_logo.gif" medium="image">
			<media:title type="html">UML logo</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/thumb/7/74/Uml_diagram.svg/750px-Uml_diagram.svg.png" medium="image">
			<media:title type="html">Hierarchy of UML 2.0 Diagrams, shown as a class diagram</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>Differences and Similarities between Design Patterns and Architectural Styles</title>
		<link>http://mauriziostorani.wordpress.com/2008/10/09/differences-and-similarities-between-design-patterns-and-architectural-styles/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/10/09/differences-and-similarities-between-design-patterns-and-architectural-styles/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 10:41:51 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[Architectural Styles]]></category>
		<category><![CDATA[Design pattern]]></category>
		<category><![CDATA[Software architecture]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=500</guid>
		<description><![CDATA[<p style="text-align:left;"><img class="aligncenter" style="margin-top:3px;margin-bottom:3px;" title="Architectural styles" src="http://www.inspect-ny.com/exterior/ArchitectureStyles.jpg" alt="Architectural styles" width="478" height="289" />[<em>Def.</em>] A <strong>pattern</strong>, from the French <strong>patron</strong>, is a theme of recurring events or objects, sometimes referred to as elements of a set. These elements repeat in a predictable manner. It can be a template or model which can be used to generate things or parts of a thing, especially if the things that are created have enough in common for the underlying pattern to be inferred, in which case the things are said to <em>exhibit</em> the unique pattern.</p>

[<em>Def.</em>] <strong>Design</strong>, usually considered in the context of applied arts, engineering, architecture, and other creative endeavors, is used both as a noun and a verb. As a verb, "to design" refers to the process of originating and developing a plan for a product, structure, system, or component.

In software engineering, a <strong class="selflink">design pattern</strong> is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into <span class="mw-redirect">code</span>. It is a description or template for how to solve a problem that can be used in many different situations. <span class="mw-redirect">Object-oriented</span> design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. <span class="mw-redirect">Algorithms</span> are not thought of as design patterns, since they solve computational problems rather than design problems.

Not all software patterns are design patterns. Design patterns deal specifically with problems at the level of software <em>design</em>. Other kinds of patterns, such as architectural patterns, describe problems and solutions that have alternative scopes.


<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/10/09/differences-and-similarities-between-design-patterns-and-architectural-styles" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END -->
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=500&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;"><img class="aligncenter" style="margin-top:3px;margin-bottom:3px;" title="Architectural styles" src="http://www.inspect-ny.com/exterior/ArchitectureStyles.jpg" alt="Architectural styles" width="478" height="289" />[<em>Def.</em>] A <strong>pattern</strong>, from the French <strong>patron</strong>, is a theme of recurring events or objects, sometimes referred to as elements of a set. These elements repeat in a predictable manner. It can be a template or model which can be used to generate things or parts of a thing, especially if the things that are created have enough in common for the underlying pattern to be inferred, in which case the things are said to <em>exhibit</em> the unique pattern.</p>
<p>[<em>Def.</em>] <strong>Design</strong>, usually considered in the context of applied arts, engineering, architecture, and other creative endeavors, is used both as a noun and a verb. As a verb, &#8220;to design&#8221; refers to the process of originating and developing a plan for a product, structure, system, or component.</p>
<p>In software engineering, a <strong class="selflink">design pattern</strong> is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into <span class="mw-redirect">code</span>. It is a description or template for how to solve a problem that can be used in many different situations. <span class="mw-redirect">Object-oriented</span> design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. <span class="mw-redirect">Algorithms</span> are not thought of as design patterns, since they solve computational problems rather than design problems.</p>
<p>Not all software patterns are design patterns. Design patterns deal specifically with problems at the level of software <em>design</em>. Other kinds of patterns, such as architectural patterns, describe problems and solutions that have alternative scopes.</p>
<h2>Example 1 : Singleton [Gamma95]</h2>
<p><strong>Rationalle and Motivation</strong></p>
<p>The singleton pattern applies to the many situations in which there needs to be a <em>single instance</em> of a class, a single object.  It is often left up to the programmer to insure that the    An important consideration in implementing this pattern is how to make this single instance easily accessible by many other objects.</p>
<p><strong>Classes</strong></p>
<p>There is actually only one class that needs to be written specially to implement the <em>Singleton</em> pattern.  A second client class will always be involved  take make requests from the singleton.</p>
<div class="wp-caption aligncenter" style="width: 279px"><img style="margin-top:3px;margin-bottom:3px;" title="Singleton " src="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/singleton.gif" alt="[Booch Cloud]" width="269" height="185" /><p class="wp-caption-text">Singleton </p></div>
<p style="text-align:left;">Here is what a Booch [Booch94] class cloud might look like:</p>
<p><!-- This one for Classes section --><strong>Advantages</strong></p>
<p><em>What are the advantages to using this pattern?</em></p>
<p>Single instance is controlled absolutely.  When implemented as the      pattern recommends, the class will have direct control over how many     instances can be created.  This is in contrast to making the programmer     responsible for insuring that there is only one instance.</p>
<p>This pattern is easily extensible to allow a controlled number of     &#8220;singleton&#8221; objects to be created.  The most important modification     needed to accomplish this change is in the operator that     has control over access to the instances.  In this case, the     <code>Instance()</code> function would need to be changed.</p>
<p><!-- This one for Advantages section --><strong>Examples</strong> Here is how a generic singleton might be written in C++.  If you want to try it, here is the source code: <a href="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/singleton_ex.tar">singleton_ex.tar</a></p>
<pre>class Singleton {
public:
    static Singleton* Instance();  // gives back a real object!
    static proof(void);            // proof that the object was made
protected:
    Singleton();                   // constructor
private:
    static Singleton* _singleton;
};</pre>
<p>And the implementation like:</p>
<pre>Singleton* Singleton::_singleton = 0;

Singleton* Singleton::Instance()
{
   if (_singleton == 0)
   {
      _singleton = new Singleton;
   }     // end if
   return _singleton;
}    // end Instance()</pre>
<h4>Food for thought&#8230;</h4>
<p>What about sub-classing?  How can we make the implementation more flexible?  Possibly for reuse, or maybe for using multiple singletons in a single program.  So what really happens if you try to explicitly declare a Singleton object?</p>
<h2>Example 2 : Facade</h2>
<p><strong>Rationalle and Motivation</strong></p>
<p>The <em>facade</em> pattern can make the task of accessing a large number of modules much simpler by providing an additional interface layer.  When designing good programs, programmers usually attempt to avoid excess coupling between module/classes.  Using this pattern helps to simplify much of the interfacing that makes large amounts of coupling complex to use and difficult to understand.  In a nutshell, this is accomplished by creating a small collection of classes that have a single class that is used to access them, the <em>facade</em>.</p>
<p><strong>Classes</strong></p>
<p>There can be any number of classes involved in this &#8220;facaded&#8221; system, but I would think that the minimum is four classes.  One client, the facade, and the classes underneath the facade.  In a typical situation, the facade would have a limited amount of actual code, making calls to lower layers most of the time.</p>
<p><strong>Advantages/Disadvantages</strong></p>
<p>As stated before, the primary advantage to using the facade is the make the interfacing between many modules or classes more managable.  One possible disadvantage to this pattern is that you may lose some functionality contained in the lower level of classes, but this depends on how the facade was designed.</p>
<p><!-- ending Advantages --><strong>Examples</strong></p>
<p>Imagine that you need to write some program that needs to represent a building as rooms that can be manipulated.  Manipulated as in interacting with objects in the room to change their state.  The client that has ordered this program has determined that there will only be a need for a finite number of objects possible in each room, and a finite number of operations that can be performed on each of them.</p>
<p>You, as the program architect, have decided that the facade pattern will be an excelent way to keep the amount of interfacing low, considering the number of possible objects in each room, and the actions that the client has specified.</p>
<p><div class="wp-caption aligncenter" style="width: 516px"><img style="margin-top:3px;margin-bottom:3px;" title="Facade example" src="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/facade1.gif" alt="[Booch Diagram of a Facade]" width="506" height="457" /><p class="wp-caption-text">Facade example</p></div>A sample action for a room is to &#8220;prepare it for a presentation&#8221;.  You have decided that this will be part of your facade interface since it deals with a large number of classes, but does not really need to bother the programmer with interacting with each of them when a room needs to be prepared.  Here is how that facade might be organised.</p>
<div class="wp-caption aligncenter" style="width: 465px"><img style="margin-top:3px;margin-bottom:3px;" title="Facade example" src="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/facade2.gif" alt="[Booch Diagram of a Facade]" width="455" height="430" /><p class="wp-caption-text">Facade example</p></div>
<p style="text-align:left;">Consider the sheer simplicity from the client&#8217;s side of the problem.  A less thought out design may have looked like this, making lots of interaction by the client necessary.</p>
<h1 class="firstHeading">Architectural style</h1>
<p><em>[Def.]</em><strong> Architectural styles</strong> classify architecture in terms of form, <span class="extiw">techniques</span>, <span class="mw-redirect">materials</span>, time period, region, etc. It overlaps with, and emerges from the study of the evolution and history of architecture. In <span class="mw-redirect">architectural history</span>, the study of Gothic architecture, for instance, would include all aspects of the cultural context that went into the design and construction of these structures. Architectural style is a way of classifying architecture that gives emphasis to characteristic features of design, leading to a terminology such as Gothic &#8220;style&#8221;.</p>
<p><em>[Def.</em>] The <strong>software architecture</strong> of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them. The term also refers to documentation of a system&#8217;s software architecture. Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.</p>
<p>[<em>Shaw &amp; Clements, 1996</em>] “A set of design rules that identify the kinds of components and connectors that may be used to compose a system or subsystem, together with local or global constraints on the way the composition is done”</p>
<p>A set of constraints you put on your development to elicit desirable properties from your software architecture. Constraints may be:</p>
<ul>
<li> Topological</li>
<li> Behavioral</li>
<li> Communication-oriented</li>
<li> etc. etc.</li>
</ul>
<p>Architectural styles typically determine four kinds of properties [<em>AAG93</em>]:</p>
<ol>
<li> They provide a <strong>vocabulary </strong>of design elements – component and connector types such as pipes, filters, clients, servers, parsers, databases etc.</li>
<li> They define <strong>a set of configuration rules </strong>– or topological constraints – that determine the permitted compositions of those elements.</li>
<li> They define a <strong>semantic interpretation</strong>, whereby compositions of design elements, suitably constrained by the configuration rules, have well-defined meanings.</li>
<li> They define <strong>analyses </strong>that can be performed on systems built in that style. Examples include schedulability analysis for a style oriented toward real-time processing [<em>Ves94</em>] and deadlock detection for clientserver message passing [<em>JC94</em>].</li>
</ol>
<h2>Example Architectural Styles</h2>
<ul>
<li><strong>Model-View-Controller (MVC) architecture pattern</strong>.  The MVC architecture style is a popular organizing concept for systems.  The model represents the data for the system, the view represents the way the data are presented to the user, and the controller handles the logic for the system.</li>
<li><strong>Publish-subscribe</strong>.  The publish-subscribe architecture pattern is a system in which a publisher publishes data on a bus.  Subscribers subscribe to portions of the data that are published by publishers on the bus.  They register for various topics.  When a message appears on the bus that matches the topic in which a subscriber is interested, the bus notifies the subscriber.  The subscriber can then read the message from the bus.</li>
<li><strong>Pipes and filters</strong>.  Anyone who is familiar with UNIX systems will recognize this architectural pattern.  The pipe and filter pattern allows a system to be assembled from small programs called filters.  A filter has an input and an output.  The filters are assembled into a chain in which each filter gets data from the previous filter in the chain, processes the data, and passes the data to the next filter in the chain.  The best example of a pipe and filter system is a compiler.  The lexical analysis, syntax analysis, semantic analysis, intermediate code generation, and optimization occur in a pipe and filter style chain.</li>
<li><strong>Layers.</strong> A layered system is one in which different layers of the system take care of a specific function of the system.  Each layer in a layered architectural style is a package of software that has a well-defined interface and a few well-known dependencies within the application.  For example, a data access layer is responsible for encapsulating the technical means for accessing a database.  All data requests to  a database go through the data access layer for that database.  The data access layer has the responsibility of hiding the data access mechanism from upstream layers.  In a closed layer system, a layer may only access adjacent layers.  In an open layer system, layers may access any other layer in the system, not just the ones to which they are adjacent.</li>
</ul>
<h2><strong>Model-View-Controller (MVC) architecture pattern</strong></h2>
<p><strong>Model-view-controller</strong> (<strong>MVC</strong>) is an architectural pattern used in software engineering. Successful use of the pattern isolates business logic from user interface considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other. In MVC, the <em>model</em> represents the information (the data) of the application and the business rules used to manipulate the data; the <em>view</em> corresponds to elements of the user interface such as text, checkbox items, and so forth; and the <em>controller</em> manages details involving the communication to the model of user actions such as keystrokes and mouse movements.</p>
<div class="wp-caption aligncenter" style="width: 331px"><img style="border:0 none;margin-top:3px;margin-bottom:3px;" title="MVC model" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/ModelViewControllerDiagram.svg/321px-ModelViewControllerDiagram.svg.png" border="0" alt="ModelViewControllerDiagram.svg" width="321" height="151" /><p class="wp-caption-text">MVC model</p></div>
<ul>
<li><strong>Model </strong>
<ul>
<li>The model represents enterprise data and the business rules that govern access to and updates of this data.</li>
<li> This is the domain-specific representation of the information on which the application operates.</li>
<li>It maps requests coming from clients into operations over the model</li>
</ul>
</li>
<li> <strong>View </strong>
<ul>
<li>The view renders the contents of a model. It accesses enterprise data through the model and specifies how<br />
that data should be presented.</li>
<li> It is the view&#8217;s responsibility to maintain consistency in its presentation when the model changes.</li>
<li> MVC is often seen in web applications, where the view is the HTML page and the code which gathers<br />
dynamic data for the page.</li>
</ul>
</li>
<li> <strong>Controller </strong>
<ul>
<li> The controller translates interactions with the view into actions to be performed by the model.</li>
<li> This responds to events, typically user actions, and invokes changes on the model and perhaps the view.</li>
<li> In a stand-alone GUI client, user interactions could be button clicks or menu selections, whereas in a Web application, they appear as GET and POST HTTP requests. The actions performed by the model include activating business processes or changing the state of the model. Based on the user interactions and the outcome of the model actions, the controller responds by selecting an appropriate view.</li>
</ul>
</li>
</ul>
<h2>Differences and Similarities beetwen Architectural Styles and Design Patterns</h2>
<p>There are many similarities between patterns and styles. Gaol: package engineering experience, formulation is the same : organization and interaction among &#8220;key&#8221; components. But thay have come from different communities. Many architectural styles have been well know for a long time in the software engineering community  while patterns area relatively recent development in OO design . Figure below show a sketch of differences and similarities.</p>
<div id="attachment_501" class="wp-caption aligncenter" style="width: 447px"><a title="diffences-and-similarities-between-architectural-styles-and-design-pattern" href="http://mauriziostorani.files.wordpress.com/2008/10/diffences-and-similarities-between-architectural-styles-and-design-pattern.png" target="_blank"><img class="size-full wp-image-501" style="margin-top:3px;margin-bottom:3px;" title="diffences-and-similarities-between-architectural-styles-and-design-pattern" src="http://mauriziostorani.files.wordpress.com/2008/10/diffences-and-similarities-between-architectural-styles-and-design-pattern.png?w=455" alt="diffences-and-similarities-between-architectural-styles-and-design-pattern"   /></a><p class="wp-caption-text">Differences and similarities</p></div>
<p style="text-align:right;"><em>[henrymuccini.com]<br />
[wikipedia.org]<br />
[http://users.csc.calpoly.edu]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/10/09/differences-and-similarities-between-design-patterns-and-architectural-styles" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /> Tagged: Architectural Styles, Design pattern, MVC, Software architecture <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/500/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/500/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/500/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=500&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/10/09/differences-and-similarities-between-design-patterns-and-architectural-styles/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://www.inspect-ny.com/exterior/ArchitectureStyles.jpg" medium="image">
			<media:title type="html">Architectural styles</media:title>
		</media:content>

		<media:content url="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/singleton.gif" medium="image">
			<media:title type="html">Singleton </media:title>
		</media:content>

		<media:content url="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/facade1.gif" medium="image">
			<media:title type="html">Facade example</media:title>
		</media:content>

		<media:content url="http://users.csc.calpoly.edu/%7Edbutler/tutorials/winter96/patterns/facade2.gif" medium="image">
			<media:title type="html">Facade example</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/ModelViewControllerDiagram.svg/321px-ModelViewControllerDiagram.svg.png" medium="image">
			<media:title type="html">MVC model</media:title>
		</media:content>

		<media:content url="http://mauriziostorani.files.wordpress.com/2008/10/diffences-and-similarities-between-architectural-styles-and-design-pattern.png" medium="image">
			<media:title type="html">diffences-and-similarities-between-architectural-styles-and-design-pattern</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>Turing Test on six machine: Loebner Prize in Artificial Intelligence</title>
		<link>http://mauriziostorani.wordpress.com/2008/10/06/turing-test-on-six-machine-loebner-prize-in-artificial-intelligence/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/10/06/turing-test-on-six-machine-loebner-prize-in-artificial-intelligence/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 07:29:41 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Turing Machine]]></category>
		<category><![CDATA[Alan Turing]]></category>
		<category><![CDATA[Loebner Prize]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=494</guid>
		<description><![CDATA[<img class="alignleft" style="margin:3px 8px;" src="http://loebner.net/Prizef/GoldPrizeAMT.jpg" alt="Loebner Prize in Artificial Intelligence - The First Turing Test" width="250" height="252" />The Turing Test was introduced by Alan M. Turing (1912-1954) as "the imitation game" in his 1950 article (now available online) <a href="http://cogprints.ecs.soton.ac.uk/archive/00000499/00/turing.html" target="_blank"><em>Computing Machinery and Intelligence </em> (Mind, Vol. 59, No. 236, pp. 433-460)</a> which he so boldly began by the following sentence:

<em>I propose to consider the question "Can machines think?" This should begin with definitions of the meaning of the terms "machine" and "think."</em>

Turing Test is meant to determine if a computer program has intelligence. Quoting Turing, the original imitation game can be described as follows:


<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/10/06/turing-test-on-six-machine-loebner-prize-in-artificial-intelligence&#38;title=Turing Test on six machine: Loebner Prize in Artificial Intelligence" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=494&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin:3px 8px;" src="http://loebner.net/Prizef/GoldPrizeAMT.jpg" alt="Loebner Prize in Artificial Intelligence - The First Turing Test" width="250" height="252" />The Turing Test was introduced by Alan M. Turing (1912-1954) as &#8220;the imitation game&#8221; in his 1950 article (now available online) <a href="http://cogprints.ecs.soton.ac.uk/archive/00000499/00/turing.html" target="_blank"><em>Computing Machinery and Intelligence </em> (Mind, Vol. 59, No. 236, pp. 433-460)</a> which he so boldly began by the following sentence:</p>
<p><em>I propose to consider the question &#8220;Can machines think?&#8221; This should begin with definitions of the meaning of the terms &#8220;machine&#8221; and &#8220;think.&#8221;</em></p>
<p>Turing Test is meant to determine if a computer program has intelligence. Quoting Turing, the original imitation game can be described as follows:</p>
<p><em>The new form of the problem can be described in terms of a game which we call the &#8220;imitation game.&#8221; It is played with three people, a man (A), a woman (B), and an interrogator (C) who may be of either sex. The interrogator stays in a room apart from the other two. The object of the game for the interrogator is to determine which of the other two is the man and which is the woman. He knows them by labels X and Y, and at the end of the game he says either &#8220;X is A and Y is B&#8221; or &#8220;X is B and Y is A.&#8221; The interrogator is allowed to put questions to A and B.</em></p>
<p>When talking about the Turing Test today what is generally understood is the following: The interrogator is connected to one person and one machine via a terminal, therefore can&#8217;t see her counterparts. Her task is to find out which of the two candidates is the machine, and which is the human only by asking them questions. If the machine can &#8220;fool&#8221; the interrogator, it is intelligent.</p>
<p>This test has been subject to different kinds of criticism and has been at the heart of many discussions in AI, philosophy and cognitive science for the past 50 years.</p>
<h2>Who was Alan Turing?</h2>
<p><em>[from Wikipedia.org]</em> <strong>Alan Mathison Turing</strong>, OBE, <span class="mw-redirect">FRS</span> (pronounced <span class="IPA" title="Pronunciation in the International Phonetic Alphabet (IPA)">/ˈt(j)ʊ(ə)rɪŋ/</span>) (23 June 1912 – 7 June 1954) was an English mathematician, <span class="mw-redirect">logician</span> and <span class="mw-redirect">cryptographer</span>.</p>
<p>Turing is often considered to be the father of modern computer science. He provided an influential formalisation of the concept of the algorithm and computation with the Turing machine. With the Turing test, meanwhile, he made a significant and characteristically provocative contribution to the debate regarding artificial intelligence: whether it will ever be possible to say that a machine is conscious and can think. He later worked at the National Physical Laboratory, creating one of the first designs for a stored-program computer, the ACE, although it was never actually built in its full form. In 1948, he moved to the University of Manchester to work on the Manchester Mark I, then emerging as one of the world&#8217;s earliest true computers.</p>
<p>During the Second World War Turing worked at Bletchley Park, the UK&#8217;s codebreaking centre, and was for a time head of Hut 8, the section responsible for German naval cryptanalysis. He devised a number of techniques for breaking German ciphers, including the method of the bombe, an electromechanical machine that could find settings for the <a title="Enigma machine" href="http://en.wikipedia.org/wiki/Enigma_machine" target="_blank">Enigma machine</a>.</p>
<h2><a href="http://www.loebner.net/Prizef/loebner-prize.html" target="_blank"><span style="font-size:18pt;">What is the Loebner Prize?</span></a></h2>
<p><!-- google_ad_section_start-->The <a href="http://www.loebner.net/Prizef/loebner-prize.html" target="_blank">Loebner Prize</a> for artificial intelligence <span class="GramE">( AI</span> ) is the first formal instantiation of a <a href="http://cogsci.ucsd.edu/%7easaygin/tt/ttest.html" target="_blank">Turing Test</a>. The test is named after <a href="http://www.turing.org.uk/turing/" target="_blank">Alan Turing </a>the brilliant British mathematician. Among his many accomplishments was basic research in computing science. In 1950, in the article <a href="http://loebner.net/Prizef/TuringArticle.html" target="_blank"><em>Computing Machinery and Intelligence </em></a>which appeared in the philosophy journal Mind, Alan Turing asked the question &#8220;Can a Machine Think?&#8221; He answered in the affirmative, but a central question was: &#8220;If a computer could think, how could we tell?&#8221; Turing&#8217;s suggestion was, that if the responses from the computer were indistinguishable from that of a <span class="SpellE">human<span class="GramE">,the</span></span> computer could be said to be thinking. This field is generally known as natural language processing.<!-- google_ad_section_end --></p>
<p><!-- google_ad_section_start(weight=ignore) -->In 1990 <a href="http://www.loebner.net/index.html" target="_blank">Hugh Loebner</a> agreed with The Cambridge Center for Behavioral Studies to underwrite a contest designed to implement the Turing Test. Dr. Loebner pledged a Grand Prize of $100,000 and a Gold Medal (pictured above) for the first computer whose responses were indistinguishable from a human&#8217;s. Such a computer can be said &#8220;to think.&#8221; Each year an annual prize of $2000 and a bronze medal is awarded to the <strong>most </strong>human-like computer. The winner of the annual contest is the best entry relative to other entries that year, irrespective of how good it is in an absolute sense.<!-- google_ad_section_end --></p>
<p>Further information on the development of the Loebner Prize and the reasons for its existence is available in Loebner&#8217;s article <a href="http://loebner.net/Prizef/In-response.html" target="_blank">In Response</a> to the article <a href="http://www.eecs.harvard.edu/shieber/Biblio/Papers/loebner-rev-html/loebner-rev-html.html" target="_blank">Lessons from a <strong>Restricted Turing Test</strong></a> by Stuart <span class="SpellE">Shieber</span>.</p>
<h2><a href="http://www.guardian.co.uk/technology/2008/oct/05/artificialintelligenceai" target="_blank">&#8216;Intelligent&#8217; computers put to the test&#8217; (Guardian.co.uk)</a></h2>
<p>Can machines think? That was the question posed by the great mathematician Alan Turing. Half a century later six computers are about to converse with human interrogators in an experiment that will attempt to prove that the answer is yes.</p>
<p>In the &#8216;Turing test&#8217; a machine seeks to fool judges into believing that it could be human. The test is performed by conducting a text-based conversation on any subject. If the computer&#8217;s responses are indistinguishable from those of a human, it has passed the Turing test and can be said to be &#8216;thinking&#8217;.</p>
<p>No machine has yet passed the test devised by Turing, who helped to crack German military codes during the Second World War. But at 9am next Sunday, six computer programs &#8211; &#8216;artificial conversational entities&#8217; &#8211; will answer questions posed by human volunteers at the University of Reading in a bid to become the first recognised &#8216;thinking&#8217; machine. If any program succeeds, it is likely to be hailed as the most significant breakthrough in artificial intelligence since the IBM supercomputer Deep Blue beat world chess champion Garry Kasparov in 1997. It could also raise profound questions about whether a computer has the potential to be &#8216;conscious&#8217; &#8211; and if humans should have the &#8216;right&#8217; to switch it off.</p>
<p>Professor Kevin Warwick, a cyberneticist at the university, said: &#8216;I would say now that machines are conscious, but in a machine-like way, just as you see a bat or a rat is conscious like a bat or rat, which is different from a human. I think the reason Alan Turing set this game up was that maybe to him consciousness was not that important; it&#8217;s more the appearance of it, and this test is an important aspect of appearance.&#8217;</p>
<p>The six computer programs taking part in the test are called Alice, Brother Jerome, Elbot, Eugene Goostman, Jabberwacky and Ultra Hal. Their designers will be competing for an 18-carat gold medal and $100,000 offered by the Loebner Prize in Artificial Intelligence. (<a href="http://www.guardian.co.uk/technology/2008/oct/05/artificialintelligenceai" target="_blank">more</a>)</p>
<p style="text-align:right;"><em>[http://www.loebner.net/]<br />
[http://www.guardian.co.uk/technology]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/10/06/turing-test-on-six-machine-loebner-prize-in-artificial-intelligence&amp;title=Turing Test on six machine: Loebner Prize in Artificial Intelligence" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /> Tagged: AI, Alan Turing, Artificial Intelligence, Loebner Prize, Turing Machine <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/494/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=494&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/10/06/turing-test-on-six-machine-loebner-prize-in-artificial-intelligence/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://loebner.net/Prizef/GoldPrizeAMT.jpg" medium="image">
			<media:title type="html">Loebner Prize in Artificial Intelligence - The First Turing Test</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>New episode from SE-Radio.net: Basic Introduction to AOP (Aspect Oriented Programming)</title>
		<link>http://mauriziostorani.wordpress.com/2008/09/18/new-episode-from-se-radionet-basic-introduction-to-aop-aspect-oriented-programming/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/09/18/new-episode-from-se-radionet-basic-introduction-to-aop-aspect-oriented-programming/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 11:58:18 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[AOP]]></category>
		<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[Equinox Aspects]]></category>
		<category><![CDATA[se-radio.net]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=486</guid>
		<description><![CDATA[<img class="alignleft" style="margin:3px 8px;" src="http://www.oopsla.org/oopsla2007/podcasts/se-radio-logo-oopsla.gif" alt="se-radio.net logo" width="232" height="251" />I want to post the SE-Radio.net <a href="http://www.se-radio.net/podcast/2008-08/episode-106-introduction-aop" target="_blank">Episode 106</a> about AOP programming and two nice presentations from <a href="slideshare.net" target="_blank">slideshare.net</a>.

AOP  importance is increasing in the past few years, <a href="www.springframework.org" target="_blank">Spring </a>are using it in a widely manner and also OSGi have announced few month ago your Aspect bundle for weaving at run-time (<a href="www.eclipse.org/equinox/incubator/aspects/" target="_blank">Equinox Aspect</a>). So AOP have a grait impact on present programming and I think that it will have also with future programming.
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=486&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin:3px 8px;" src="http://www.oopsla.org/oopsla2007/podcasts/se-radio-logo-oopsla.gif" alt="se-radio.net logo" width="232" height="251" />I want to post the SE-Radio.net <a href="http://www.se-radio.net/podcast/2008-08/episode-106-introduction-aop" target="_blank">Episode 106</a> about AOP programming and two nice presentations from <a href="slideshare.net" target="_blank">slideshare.net</a>.</p>
<p>AOP  importance is increasing in the past few years, <a href="www.springframework.org" target="_blank">Spring </a>are using it in a widely manner and also OSGi have announced few month ago your Aspect bundle for weaving at run-time (<a href="www.eclipse.org/equinox/incubator/aspects/" target="_blank">Equinox Aspect</a>). So AOP have a grait impact on present programming and I think that it will have also with future programming.</p>
<p>This episode is a systematic introduction to Aspect Oriented Programming (in contrast to the <a href="http://se-radio.net/podcast/2006-04/episode-11-interview-gregor-kiczales" target="_blank">interview with Gregor Kiczales</a>). We discuss the fundamentals of AOP, define many of the relevant terms and also look at how and where AOP is used in practice, as well as at some current research trends.</p>
<h3 class="field-label">Host(s)</h3>
<div class="field-items">
<div class="field-item">Markus</div>
</div>
<h3 class="field-label">Guest(s)</h3>
<p><a href="http://www.kircher-schwanninger.de/christa/">Christa Schwanninger</a>,<br />
<a href="http://www.sea.uni-linz.ac.at/index.php?title=Dipl._Ing._%28FH%29_Dr._Iris_Groher">Iris Groher</a></p>
<span style='text-align:left;display:block;'><p><object type='application/x-shockwave-flash' data='http://s0.wp.com/wp-content/plugins/audio-player/player.swf' width='290' height='24' id='audioplayer1'><param name='movie' value='http://s0.wp.com/wp-content/plugins/audio-player/player.swf' /><param name='FlashVars' value='&amp;bg=0xf8f8f8&amp;leftbg=0xeeeeee&amp;lefticon=0x666666&amp;rightbg=0xcccccc&amp;rightbghover=0x999999&amp;righticon=0x666666&amp;righticonhover=0xffffff&amp;text=0x666666&amp;slider=0x666666&amp;track=0xFFFFFF&amp;border=0x666666&amp;loader=0x9FFFB8&amp;soundFile=http%3A%2F%2Fmedia.libsyn.com%2Fmedia%2Fseradio%2Fseradio-episode106-introductionToAOP.mp3' /><param name='quality' value='high' /><param name='menu' value='false' /><param name='bgcolor' value='#FFFFFF' /><param name='wmode' value='opaque' /></object></p></span>
<p>Follow I have posted from <a href="http://www.slideshare.net" target="_blank">slideshare.net</a> two good presentations to AOP.</p>
<h3>Aspect-Oriented Programming and Depedency Injection</h3>
<iframe src='http://www.slideshare.net/slideshow/embed_code/461536' width='425' height='348'></iframe>
<h3>Aspect Oriented Software Development</h3>
<iframe src='http://www.slideshare.net/slideshow/embed_code/80097' width='425' height='348'></iframe>
<p>Have fun!</p>
<p style="text-align:right;"><em>[se-radio.net]</em></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mauriziostorani.wordpress.com/486/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mauriziostorani.wordpress.com/486/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/486/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=486&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/09/18/new-episode-from-se-radionet-basic-introduction-to-aop-aspect-oriented-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.libsyn.com/media/seradio/seradio-episode106-introductionToAOP.mp3" length="62221210" type="audio/mpeg" />
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://www.oopsla.org/oopsla2007/podcasts/se-radio-logo-oopsla.gif" medium="image">
			<media:title type="html">se-radio.net logo</media:title>
		</media:content>
	</item>
		<item>
		<title>Mashup (hybrid web application): new generation of Web-based applications</title>
		<link>http://mauriziostorani.wordpress.com/2008/09/18/mashup-hybrid-web-application-new-generation-of-web-based-applications/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/09/18/mashup-hybrid-web-application-new-generation-of-web-based-applications/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 07:26:24 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Mashup]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[Service mashups]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=480</guid>
		<description><![CDATA[<img class="alignleft size-medium wp-image-564" title="drmashupimage2" src="http://mauriziostorani.files.wordpress.com/2008/09/drmashupimage2.jpg?w=279" alt="" width="279" height="300" /><strong>Mashups </strong>are new and exciting aspects of Web 2.0. As is often the case with new technologies or approaches the industry often gets caught up in promoting the value proposition of what’s emerging. The hype often muddies the water between the value of what can be created with the new technology and the value of what exists today. With mashups, it's often unclear to IT professionals how their existing Web applications might be different from the proposed innovative approach to mashing-up data with a browser.

One of the first questions that customers often ask is "What’s the difference between a mashup and the Web applications that we currently use in our enterprise today?" The difference has little to do with technology or the integration of systems. Instead, it reflects the ease with which the application can be created by users, how the application is intended to be used, and the lack of nonfunctional requirements (for example, reliability, availability, and performance) that need to be addressed after the mashup or Web application is deployed.


<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/09/18/mashup-hybrid-web-application-new-generation-of-web-based-applications&#38;title=Mashup (hybrid web application): new generation of Web-based applications" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=480&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-564" title="drmashupimage2" src="http://mauriziostorani.files.wordpress.com/2008/09/drmashupimage2.jpg?w=279&#038;h=300" alt="" width="279" height="300" /><strong>Mashups </strong>are new and exciting aspects of Web 2.0. As is often the case with new technologies or approaches the industry often gets caught up in promoting the value proposition of what’s emerging. The hype often muddies the water between the value of what can be created with the new technology and the value of what exists today. With mashups, it&#8217;s often unclear to IT professionals how their existing Web applications might be different from the proposed innovative approach to mashing-up data with a browser.</p>
<p>One of the first questions that customers often ask is &#8220;What’s the difference between a mashup and the Web applications that we currently use in our enterprise today?&#8221; The difference has little to do with technology or the integration of systems. Instead, it reflects the ease with which the application can be created by users, how the application is intended to be used, and the lack of nonfunctional requirements (for example, reliability, availability, and performance) that need to be addressed after the mashup or Web application is deployed.</p>
<h3>Innovation in the Programmable Web: Characterizing the Mashup Ecosystem</h3>
<iframe src='http://www.slideshare.net/slideshow/embed_code/384372' width='425' height='348'></iframe>
<h2><a name="N1009F"><span class="atitle">Mashups: A Web 2.0 child</span></a></h2>
<p>As noted earlier, mashups utilize many of the same technologies as traditional Web applications both in the enterprise servers and in the browser. The concept of mashups is not new, as businesses and Web developers have been aggregating and integrating data for the past decade using the Web as a platform. To minimize confusion, let’s clarify a few points about mashups. For many, mashup is considered a technical term regarding the mashing of disparate data to produce something new and interesting. A situational application is considered a tactical application, one that is often temporary and built by the people who use it. In this respect, a mashup can be a situational application, and a situational application can be a mashup. For this article, mashup means a situational application that is implemented as a mashup. See figure 1 for an overview.</p>
<p style="text-align:center;"><a name="N100AA"><strong>Figure 1. Characteristics of mashups and situational applications</strong></a><br />
<a href="http://www.ibm.com/developerworks/lotus/library/mashups-web/image001.gif" target="_blank"><img class="aligncenter" src="http://www.ibm.com/developerworks/lotus/library/mashups-web/image001.gif" alt="Characteristics of mashups and situational applications" width="343" height="172" /></a></p>
<p>A primary difference between mashups and traditional Web applications concerns the mashup application life cycle and the tendency of mashups to join seemingly unrelated data from public sources in meaningful ways with little or no formal agreements with the data providers. (<a href="http://www.ibm.com/developerworks/lotus/library/mashups-web/" target="_blank">more</a>)</p>
<h2><span class="mw-headline">Types of mashups</span></h2>
<p>There are many types of mashups, such as<strong> consumer mashups</strong>, <strong>data mashups</strong>, and <strong>business mashups</strong>. The distinction is somewhat arbitary because the underlining technology is the same regardless of the use case.</p>
<p>The most common mashup is the consumer mashup. <em>Consumer mashups</em> combine different forms of media from multiple sources and combine them into a single graphical interface. Consumer mashups are aimed at the general public, that is, consumers. Examples of consumer mashups include the many Google Maps applications, <span class="external text">iGuide</span> and <span class="external text">Radioclouds</span>.</p>
<p>Another common mashup is a data mashup. <em>Data mashups</em> combine similar types of media and information from multiple sources into a single graphical representation. An example of a data mashup is the <a href="http://visz.rsoe.hu/alertmap/index.php?lang=" target="_blank">Havaria Information Services&#8217; <span class="external text">AlertMap</span></a>. which combines current data from over 200 sources related to severe weather conditions, biohazard threats and seismic information from around the world, and displays them on a single map of the world. Another example of a data mashup is <span class="mw-redirect"><a href="http://pipes.yahoo.com/pipes/" target="_blank">Yahoo Pipes</a><br />
</span></p>
<p>Business mashups focus on various forms of data aggregation into a single presentation, but also allow for collaborative functionability amongst businesses and developers. <span class="external text">Serena Software</span> is a company involved in the business mashup industry.</p>
<h2>Service mashups</h2>
<p>Recently, in the context of the Web, the <em>mashup</em> concept has emerged, and researchers have developed a huge number of Web 2.0 applications. But what exactly does mashup mean? It simply indicates a way to create new Web applications by combining existing Web resources utilizing data and Web APIs. Mashups are about information sharing and aggregation to support content publishing for a new generation of Web applications. By extension, service mashups — the theme of this special issue — aim to design and develop novel and modern Web applications based on easy-to-accomplish end-user service compositions. Combining Web service technologies with fresh content, collaborative approaches (such as Web 2.0 technologies, tags, and microformats), and possibly Web data management and semantic technologies (RSS, RDFa, Gleaning Resource Descriptions from Dialects of Languages, and the Sparql Protocol and RDF Query Language) is an exciting challenge for both academic and industrial researchers building a new generation of Web-based applications. Researchers have created different mashup tools and platforms, letting developers and end-users access and compose various data that Web applications can provide. <a href="http://services.alphaworks.ibm.com/qedwiki/" target="_blank">IBM’s QEDWiki</a>, <a href="http://pipes.yahoo.com/" target="_blank">Yahoo Pipes</a>, <a href="http://code.google.com/gme/" target="_blank">Google Mashup Editor</a>, and <a href="http://www.popfly.com/" target="_blank">Microsoft’s Popfly</a> are some well-known examples of mashup platforms that users have largely adopted. Yet these platforms and associated tools represent only early and limited sets of capabilities that are sure to be followed by more powerful and flexible alternatives. (<a href="http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&amp;pName=dso_level1&amp;path=dsonline/2008/09&amp;file=w5gei.xml&amp;xsl=article.xsl&amp;;jsessionid=LR1zhTTHVycBMTnSq2j3C8rLpHdQ0jLXd7KgHpmRQ2Mx9mTQlTJq!1015651114" target="_blank">more)</a></p>
<h2>Key research issues in service mashups</h2>
<p>Although many have already adopted the (service) mashup concept and recognized its value, realizing the concept is still challenging, and much work remains before we’ll see mashup applications in a mature stage. Let’s briefly discuss some key issues we must consider in the future to improve sharing (registration and publication), finding (search and discovery), reusing (invocation), and integrating (mediation and composition) services.</p>
<p>The first key challenge is that of semantic heterogeneity. Compared to data, services can present a broader form of heterogeneity. Correspondingly, the Web services research community has identified a broader form of semantics — data (I/O), functional (behavioral), nonfunctional (quality of service, policy), and execution (runtime, infrastructure, exceptions). Several research projects have looked at semantics for traditional (WSDL or SOAP) Web services to help address heterogeneity and mediation challenges, and the community took a step toward supporting semantics for Web services by adopting <a href="http://www.w3.org/2002/ws/sawsdl/" target="_blank">Semantic Annotation for WSDL (SAWSDL)</a> as a W3C recommendation in August 2003. (<a href="http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&amp;pName=dso_level1&amp;path=dsonline/2008/09&amp;file=w5gei.xml&amp;xsl=article.xsl&amp;;jsessionid=LR1zhTTHVycBMTnSq2j3C8rLpHdQ0jLXd7KgHpmRQ2Mx9mTQlTJq!1015651114" target="_blank">more)</a></p>
<h2><a href="http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&amp;pName=dso_level1&amp;path=dsonline/2008/09&amp;file=w5gei.xml&amp;xsl=article.xsl&amp;;jsessionid=LR1zhTTHVycBMTnSq2j3C8rLpHdQ0jLXd7KgHpmRQ2Mx9mTQlTJq!1015651114" target="_blank">In this issue</a></h2>
<p>The four articles in this issue address some of the challenges inherent in developing mashup-services-based advanced Web applications.</p>
<p>In <a href="http://doi.ieeecomputersociety.org/10.1109/MIC.2008.105" target="_blank">“Mashing Up Search Services,”</a> Daniele Braga, Stefano Ceri, Florian Daniel, and Davide Martinenghi propose a visual service mashup language for graphically composing and automatically executing queries over search services. They define search services as services with a variable number of ranked data. The proposed language lets users declaratively specify a query and mash up registered services in a drag-and-drop fashion to compose that query. The authors build service compositions as directed acyclic graphs whose nodes are service invocations and whose arcs are connections between services. The authors propose a physical service access plan for the Web service composition’s execution needs, such as generating a schedule of series or parallel service invocations, orchestrating such invocations, and joining data from different services into a ranked output. They argue that their language enables interesting runtime environments capable of deriving different executable service invocation strategies. Researchers are still working to meet other challenges, such as mastering more complex dependencies among services and supporting reliable and transactional Web services.</p>
<p>In <a href="http://doi.ieeecomputersociety.org/10.1109/MIC.2008.98" target="_blank">“Composing RESTful Services and Collaborative Workflows: A Lightweight Approach,”</a> Florian Rosenberg, Francisco Curbera, Matthew J. Duftler, and Rania Khalaf propose the extensible Bite language based on a lightweight process composition model for both Web data-driven applications and Web workflow composition. Bite combines SOA process composition principles with REST architectural requirements and workflow functionalities. It lets users implement RESTful service composition and interactive workflows.</p>
<p>In <a href="http://doi.ieeecomputersociety.org/10.1109/MIC.2008.92" target="_blank">“An Online Platform for Web APIs and Service Mashups,”</a> E. Michael Maximilien, Ajith Ranabahu, and Karthik Gomadam propose an online mashup platform that enables the construction, reuse, sharing, deployment, and management of Web APIs and service mashups. The proposed platform’s main characteristic resides in its domain-specific language, which is introduced to explicitly represent the activities that a mashup designer must fulfill, such as data mediation and service protocol mediation. The authors have deployed the IBM sharable code platform on IBM alpha works services.</p>
<p>Finally, in <a href="http://doi.ieeecomputersociety.org/10.1109/MIC.2008.114" target="_blank">“Understanding Mashup Development,”</a> Jin Yu, Boualem Benatallah, Fabio Casati, and Florian Daniel provide an overview of some popular and representative mashup development tools and frameworks. Mashup in this article refers to Web applications comprising data, application logic, and UIs of existing applications or services. The authors compare and discuss these tools and frameworks by considering four dimensions: the <em>component model</em>, which describes the mashup components’ characteristic properties; the <em>composition model</em>, which specifies how components are glued to create a mashup application; the <em>development environment</em>, and the <em>runtime environment</em>. In their discussion, the authors conclude that mashup tools’ main characteristics are simplicity, usability, and ease of access. They also identify some perspectives that could improve mashup tools, such as describing user interfaces as components that can be reused and integrated like services.</p>
<h2>Example of Mushup Application</h2>
<ul>
<li>The mashup below uses the Yahoo API to create a traffic mapping tool. Enter the city and state for a view of traffic accidents, delays, and other incidents in your area. If no markers are present, try entering New York, New York where unfortunately, accidents seem to be ever present in the city. (<a href="http://www.thunderdata.com/wiki/Main/WebServices" target="_blank">follow me</a>)</li>
</ul>
<ul>
<li>An Ajax-Mashup Sample Application on Sun Java System Web Server 7.0 (<a href="http://developers.sun.com/webtier/reference/techart/ajax-mashup.html" target="_blank">follow me</a>)</li>
</ul>
<ul>
<li><a title="http://gis.chicagopolice.org/CLEARMap_crime_sums/startPage.htm" rel="nofollow" href="http://gis.chicagopolice.org/CLEARMap_crime_sums/startPage.htm" target="_blank">CLEARMAP</a> is a mashup web application by the Chicago Police Department which integrates the department’s database of reported crimes with Google Maps in order to help stop crime in areas and warn citizens of areas where the crime rate is high.</li>
</ul>
<ul>
<li><a title="http://www.thecampingmap.com" rel="nofollow" href="http://www.thecampingmap.com/" target="_blank">TheCampingMap.com</a> is a site that shows camp-sites in Europe.</li>
</ul>
<ul>
<li><a title="http://www.wikicrimes.org" rel="nofollow" href="http://www.wikicrimes.org/" target="_blank">WikiCrimes</a> is a wiki-style website where internet users can report crimes by placing pins on a GoogleMaps based map. The website classifies crimes as robbery, theft or other by pin colour</li>
</ul>
<h3>David Barnes demo of IBM Mashup Center</h3>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='455' height='286' src='http://www.youtube.com/embed/ozRm7HlKfwU?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p style="text-align:right;"><em>[http://www.ibm.com]<br />
[http://developers.sun.com/]<br />
[http://dsonline.computer.org]<br />
[wikipedia.org]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/09/18/mashup-hybrid-web-application-new-generation-of-web-based-applications&amp;title=Mashup (hybrid web application): new generation of Web-based applications" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mauriziostorani.wordpress.com/480/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mauriziostorani.wordpress.com/480/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/480/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=480&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/09/18/mashup-hybrid-web-application-new-generation-of-web-based-applications/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://mauriziostorani.files.wordpress.com/2008/09/drmashupimage2.jpg?w=279" medium="image">
			<media:title type="html">drmashupimage2</media:title>
		</media:content>

		<media:content url="http://www.ibm.com/developerworks/lotus/library/mashups-web/image001.gif" medium="image">
			<media:title type="html">Characteristics of mashups and situational applications</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>JavaFX: Tutorials and Demos</title>
		<link>http://mauriziostorani.wordpress.com/2008/09/07/javafx-tutorials-and-demos/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/09/07/javafx-tutorials-and-demos/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 10:07:04 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=467</guid>
		<description><![CDATA[<p style="text-align:left;"><img class="alignleft" style="margin:3px 8px;" src="http://blogs.zdnet.com/Burnette/images/thumb-java-duke-guitar.png" alt="JavaFX image" width="300" height="256" /><strong>JavaFX</strong> is a family of products for creating <span class="mw-redirect">Rich Internet Applications</span> (RIAs) with immersive media and content. The JavaFX products include a runtime and tools suite that web scripters, designers and developers can use to quickly build and deliver expressive rich interactive applications for desktop, mobile, TV and other platforms. Currently JavaFX consists of JavaFX Script and JavaFX Mobile.</p>

<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/09/07/javafx-tutorials-and-demos&#38;title=JavaFX: Tutorials and Demos" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=467&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;"><img class="alignleft" style="margin:3px 8px;" src="http://blogs.zdnet.com/Burnette/images/thumb-java-duke-guitar.png" alt="JavaFX image" width="300" height="256" /><strong>JavaFX</strong> is a family of products for creating <span class="mw-redirect">Rich Internet Applications</span> (RIAs) with immersive media and content. The JavaFX products include a runtime and tools suite that web scripters, designers and developers can use to quickly build and deliver expressive rich interactive applications for desktop, mobile, TV and other platforms. Currently JavaFX consists of JavaFX Script and JavaFX Mobile.</p>
<p>In press previews for JavaFX, <span class="mw-redirect">Sun Fellow</span> James Gosling explained:</p>
<blockquote class="templatequote">
<div>
<p>Most scripting languages are oriented at banging out Web pages. This is oriented around interfaces that are highly animated.</p></div>
<div class="templatequotecite">—<cite>James Gosling,</cite></div>
</blockquote>
<blockquote class="templatequote">
<div>
<p>There are parts of the world where a person&#8217;s desktop computer is their cell phone, and that&#8217;s the kind of end point that we&#8217;re going to get to,</p></div>
<div class="templatequotecite">—<cite>James Gosling, </cite></div>
</blockquote>
<p>JavaFX is anticipated to compete on the desktop with Adobe Flash Player, <span class="mw-redirect">Adobe AIR</span>, OpenLaszlo, and Microsoft Silverlight. It may also target Blu-ray Disc&#8217;s interactive BD-J platform, although as yet no plans for a Blu-ray release have been announced.</p>
<h2>Tutorials on javafx.com</h2>
<h3>Creating GUIs Using JavaFX Script</h3>
<p>This lesson describes the JavaFX SDK Runtime functionality for creating GUIs. It gives you a high-level explanation of the feature and offers instructions on how to create GUIs using the functionality.</p>
<div class="smallpagetitle">
<h4>Feature Overview</h4>
</div>
<p>The JavaFX SDK runtime is the foundation library of JavaFX platform, allowing content developers, designers, and GUI architects to quickly and easily create GUIs for Rich Internet Applications. Based on the underlying scene graph functionality, the library provides the ability to present objects in scenes such as a frame containing a circle with a defined filling and stroke, and apply different types of lighting, animation, and transformation effects. For more information about the scene graph API, see the project page at <a href="http://scenegraph.dev.java.net/" target="_blank">scenegraph.dev.java.net</a> and <a href="http://javafx.com/releases/preview1/docs/tutorials/visual/index.html" target="_blank">Presenting Visual Objects</a> lesson.</p>
<div class="smallpagetitle">
<h4>Practical Examples &#8211; Creating Simple Graphics</h4>
</div>
<p align="justify">To learn how to create the GUI using JavaFX Script, consider a task of creating simple graphics: a rounded rectangle and a text string with a drop shadow.</p>
<p align="justify">The following code sample shows how you do it in a traditional way using Java 2D:</p>
<pre>import java.applet.Applet;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.*;
...
public class SimpleButton extends Applet {
...
	public void paint(Graphics g) {
	  Graphics2D g2 = (Graphics2D) g;
	  g.setColor(Color.LIGHT_GRAY);
	  g2.fillRoundRect(10, 10, 200, 50, 15, 15);

	  Font font = new Font("Serif", Font.BOLD, 20);
	  g.setFont(font);
	  String textString = "Java 2D";
	  FontRenderContext frc = ((Graphics2D)g).getFontRenderContext();
	  Rectangle2D bounds = font.getStringBounds(textString, frc);
	  int wText = (int)bounds.getWidth();
	  int TextX = 10 + 200/2 - wText/2;

	  g.setColor(Color.DARK_GRAY);
	  g.drawString(textString, TextX + 1, 39);
	  g.setColor(Color.YELLOW);
	  g.drawString(textString, TextX, 40);
	}
...
}</pre>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td class="grey3" align="center"><img class="aligncenter" src="http://javafx.com/releases/preview1/docs/tutorials/images/Java2DN.png" alt="Java2D Sample" width="209" height="58" /></p>
<div class="pad3"><span class="dkcaption1">Figure 1: Java 2D Sample </span></div>
</td>
</tr>
</tbody>
</table>
<p>To drop a shadow, this code sets a contrast color and uses an additional <kbd>drawString</kbd> method with offset coordinates.</p>
<p>The JavaFX Script Language and JavaFX Runtime classes enable developers to render the same graphic context more easily and more clearly:</p>
<pre>import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.geometry.*;
import javafx.scene.text.*;
import javafx.scene.effect.*;
import javafx.ext.swing.*;

SwingFrame {
  title: "Simple (JavaFX demo)"
  width: 228
  height: 98
  content: Canvas {
    content: Group {
      content: [
        Rectangle {
          x: 10   y: 10
          width: 200   height: 50
          arcWidth: 15   arcHeight: 15
          fill: Color.web("#C0C0C0")
        },
        Text {
          x: 110   y: 40
          content: "JavaFX"
          font: Font {
            name: "Serif"
            size: 20
            style: FontStyle.BOLD
          }
          fill: Color.YELLOW
          horizontalAlignment: HorizontalAlignment.CENTER
          effect: DropShadow {
            offsetX: 2   offsetY: -2   radius: 6
            color: Color.BLACK
          }
        }
      ]
    }
  }
  visible: true
}</pre>
<p>This code sample defines a <kbd>Group</kbd> object containing two elements: <kbd>Rectangle</kbd> and <kbd>Text</kbd>. Shape parameters and coordinates as well as font and colors are set using corresponding attributes &#8211; <kbd>x</kbd> , <kbd>y</kbd>, <kbd>font</kbd>, <kbd>size</kbd>, <kbd>style</kbd>, <kbd>fill</kbd> and <kbd>color</kbd>. The <kbd>effect</kbd> attribute applies a drop shadow to the <kbd>Text</kbd> element.</p>
<p>To enhance this code, apply a lighting effect to the <kbd>Group</kbd>:</p>
<pre>import javafx.scene.*;
import javafx.scene.paint.*;
import javafx.scene.geometry.*;
import javafx.scene.text.*;
import javafx.scene.effect.*;
import javafx.scene.effect.light.*;
import javafx.ext.swing.*;

Group {
  content: [
    Rectangle{...}
    Text {...}
  ] effect: Lighting{light: DistantLight {azimuth: 225}}
}</pre>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td class="grey3" align="center"><img class="aligncenter" src="http://javafx.com/releases/preview1/docs/tutorials/images/JavaFXN.png" alt="JavaFX Sample" width="205" height="53" /></p>
<div class="pad3"><span class="dkcaption1">Figure 2: JavaFX Script Sample </span></div>
</td>
</tr>
</tbody>
</table>
<p>The <kbd>azimuth</kbd> attribute defines a direction angle for the light source on the XY plane, in degrees.<br />
More visual effects are available in the <kbd>javafx.scene.effect</kbd> and <kbd>javafx.scene.effect.light</kbd> packages. Refer to the API doc or to <a href="http://javafx.com/releases/preview1/docs/tutorials/apiTables.html">API Reference</a> for more information. The entire code of this program is available in the <a href="http://javafx.com/releases/preview1/docs/tutorials/GUI/src/JavaFXGraphics.fx">JavaFXGraphics.fx</a> file.</p>
<h3>Applying Data Binding</h3>
<p>Data binding is one of the advantageous features in JavaFX Script Language. It enables all public attributes and functions to be bound. For example, you can bind the window title to the <kbd>TextField</kbd>, so whatever you type automatically appears in the window title without handling event listeners. For the graphical sample, you create a slider to vary the angle of the distant light source.</p>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td class="grey3" align="center"><img class="aligncenter" src="http://javafx.com/releases/preview1/docs/tutorials/images/JavaFXDataBinding.png" alt="Data Binding Sample" width="210" height="90" /></p>
<div class="pad3"><span class="dkcaption1">Figure 3: Data Binding Sample </span></div>
</td>
</tr>
</tbody>
</table>
<p>To add the slider to the <kbd>Group</kbd>, use the <kbd>ComponentView</kbd> class.</p>
<pre>var slider = Slider{minimum: 0 maximum: 360 value: 20};</pre>
<p>(<a href="http://javafx.com/releases/preview1/docs/tutorials/GUI/index.html" target="_blank">more</a>)</p>
<div class="smallpagetitle">
<h2>Demo</h2>
</div>
<p>The demo application is a stopwatch widget that measures and displays time intervals accurate to within hundredths of a second. The application interface is a dial that has a second hand, two small dials that display tenths and hundredths of a second, and a digital display that shows time elapsed in minutes, seconds, and tenths and hundredths of a second. On the top of the main dial there are two buttons, green and red. The green button starts or stops the time measure. Once the green button is pressed during time measure, the stopwatch stops indicating the time elapsed, however the actual time measuring continues. This feature allows recording intermediate results. The red button resets the elapsed time.</p>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td class="grey3" align="center"><img class="aligncenter" src="http://javafx.com/releases/preview1/docs/tutorials/images/StopwatchN.png" alt=" Stopwatch Widget" width="286" height="297" /></p>
<div class="pad3"><span class="dkcaption1">Figure 1: Stopwatch Widget </span></div>
</td>
</tr>
</tbody>
</table>
<h3>Creating the Application GUI</h3>
<p align="justify">The demo uses a number of JavaFX SDK Runtime classes to build the application UI and implement graphical effects.</p>
<p>The following code draws the inner and the outer circle of the main stopwatch. Note the use of the <kbd>Circle</kbd>, <kbd>LinearGradient</kbd>, and <kbd>RadialGradient</kbd> classes. These classes are used to draw circles with a 140- and 134- pixel radius and fill them with the linear and radial gradient respectively. The radius of the circle is defined by the <kbd>radius</kbd> attribute,  the  start and end colors of the gradient are defined using the  <kbd>Stop</kbd> and <kbd>color</kbd> attributes.</p>
<pre>Group { translateX: 40 translateY: 40 content: [
  Circle {
    centerX: 140
    centerY: 140
    radius: 140
    fill:LinearGradient { startX:0 startY:0 endX:1 endY:1
      stops: [
        Stop { offset:0 color: webcolor("#3c3c3c") },
        Stop { offset:1 color: webcolor("#010101") }
      ]
    }
  },
Circle {
  centerX: 140
  centerY: 140
  radius: 134
  fill: RadialGradient { centerX:0.5 centerY:0.5 radius:0.5
    stops: [
      Stop { offset:0 color: rgba(20,20,20,1) },
      Stop { offset:0.9499 color: rgba(20,20,20,1) },
      Stop { offset:0.95 color: rgba(20,20,20,1) },
      Stop { offset:0.975 color: rgba(20,20,20,1) },
      Stop { offset:1 color: rgba(84,84,84,0) }
    ]
  }
},
...</pre>
<p>Also note that the <kbd>Group</kbd> class groups the two circles to enable them share a coordinate space and to be transformed as a group.</p>
<p>The  numbers &#8220;0&#8243;, &#8220;15, &#8220;30&#8243;, &#8220;45&#8243; below the tick marks are implemented using the <kbd>Text</kbd> class. Here is the code that draws a white &#8220;0&#8243;.</p>
<pre>Text {
  font: Font{name: "Courier" size: 16, style: FontStyle.BOLD}
  x: 141 y: 47
  content: "0"
  horizontalAlignment: HorizontalAlignment.CENTER
  fill: webcolor("#FFFFFF")
},
...</pre>
<p>Note that the code uses <kbd>font</kbd> to set the font style and its size, <kbd>x</kbd> and <kbd>y</kbd> attributes to define the position of the tick mark, and <kbd>content</kbd> to display &#8220;0&#8243;. It also fills the tick mark with yellow using <kbd>fill</kbd> with a defined  web code for this color.</p>
<p>The hand of the main dial comprises of two rectangles and a circle created using the <kbd>Circle</kbd> and  <kbd>Rectangle</kbd> classes. Additionally,   lighting effect is applied to the dial using<kbd> Lighting</kbd> class:</p>
<pre>Group {
  content: [
    Group {
      content: [
        Circle {centerX: 140 centerY: 140 radius: 8
          fill: webcolor("#FF0000")},
        Rectangle{x: -1.5 y: -20 width: 3 height: 120
            fill: webcolor("#FF0000")
            rotate: bind handAngle
            translateX: 140
            translateY: 140},
        Rectangle{x: -1.5 y: -40 width: 3 height: 20
            fill: webcolor("#FFFFFF")
            rotate: bind handAngle
            translateX: 140
            translateY: 140}
      ]
      effect: Lighting{
        light: DistantLight {azimuth: 225}
      }
    }
  ]
...</pre>
<p>(<a href="http://javafx.com/releases/preview1/docs/tutorials/GUI/index.html" target="_blank">more</a>)</p>
<h2>Demo: JavaFX, creating a sphere with shadow on silveiraneto.net</h2>
<p><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/">Silveira Neto describes on your blog an interesting  JavaFX demo and its graphics potentialities.</a></p>
<p>This is a short tutorial about some JavaFX elements like ellipses, circles, effects and gradients.</p>
<p>In the first code we are creating a frame with a ellipse with center in (120,140), 60 pixels of horizontal radius, 20 pixels of vertical radius and color black. We have also a circle with center in (100,100), 50 pixels of radius and color red. The idea is make this circle appears like a sphere and make the ellipse look like a shadow.</p>
<pre class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#">view plain</a><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#" target="_blank">copy to clipboard</a><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#">print</a><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#">?</a></div>
</div>
<ol class="dp-j">
<li class="alt"><span><span class="keyword">import</span><span> javafx.application.*; </span></span></li>
<li><span><span class="keyword">import</span><span> javafx.scene.paint.*; </span></span></li>
<li class="alt"><span><span class="keyword">import</span><span> javafx.scene.geometry.*; </span></span></li>
<li><span> </span></li>
<li class="alt"><span>Frame { </span></li>
<li><span> title: <span class="string">"JavaFX Sphere"</span><span>, width: </span><span class="number">300</span><span>, height: </span><span class="number">300</span><span>, visible: </span><span class="keyword">true</span><span> </span></span></li>
<li class="alt"><span> stage: Stage { </span></li>
<li><span> content: [ </span></li>
<li class="alt"><span> Ellipse { </span></li>
<li><span> centerX: <span class="number">120</span><span>, centerY: </span><span class="number">140</span><span>, radiusX: </span><span class="number">60</span><span>, radiusY: </span><span class="number">20</span><span> </span></span></li>
<li class="alt"><span> fill: Color.BLACK </span></li>
<li><span> }, </span></li>
<li class="alt"><span> Circle { centerX: <span class="number">100</span><span>, centerY: </span><span class="number">100</span><span>, radius: </span><span class="number">50</span><span>, fill: Color.RED } </span></span></li>
<li><span> ] </span></li>
<li class="alt"><span> } </span></li>
<li><span>} </span></li>
</ol>
</pre>
<pre class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#">view plain</a><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#" target="_blank">copy to clipboard</a><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#">print</a><a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/#">?</a></div>
</div>
<ol class="dp-j">
<li class="alt"><span><span class="keyword">import</span><span> javafx.application.*; </span></span></li>
<li><span><span class="keyword">import</span><span> javafx.scene.paint.*; </span></span></li>
<li class="alt"><span><span class="keyword">import</span><span> javafx.scene.geometry.*; </span></span></li>
<li><span> </span></li>
<li class="alt"><span>Frame { </span></li>
<li><span> title: <span class="string">"JavaFX Sphere"</span><span>, width: </span><span class="number">300</span><span>, height: </span><span class="number">300</span><span>, visible: </span><span class="keyword">true</span><span> </span></span></li>
<li class="alt"><span> stage: Stage { </span></li>
<li><span> content: [ </span></li>
<li class="alt"><span> Ellipse { </span></li>
<li><span> centerX: <span class="number">120</span><span>, centerY: </span><span class="number">140</span><span>, radiusX: </span><span class="number">60</span><span>, radiusY: </span><span class="number">20</span><span> </span></span></li>
<li class="alt"><span> fill: Color.BLACK </span></li>
<li><span> }, </span></li>
<li class="alt"><span> Circle { centerX: <span class="number">100</span><span>, centerY: </span><span class="number">100</span><span>, radius: </span><span class="number">50</span><span>, fill: Color.RED } </span></span></li>
<li><span> ] </span></li>
<li class="alt"><span> } </span></li>
<li><span>} </span></li>
</ol>
</pre>
<pre class="jfx" style="display:none;">import javafx.application.*;
import javafx.scene.paint.*;
import javafx.scene.geometry.*;

Frame {
    title: "JavaFX Sphere", width: 300, height: 300, visible: true
    stage: Stage {
        content: [
            Ellipse {
                 centerX: 120, centerY: 140, radiusX: 60, radiusY: 20
                 fill: Color.BLACK
            },
            Circle { centerX: 100, centerY: 100, radius: 50, fill: Color.RED }
        ]
    }
}</pre>
<p style="text-align:left;"><img class="size-full wp-image-1021 aligncenter" title="JavaFX" src="http://silveiraneto.net/wp-content/uploads/2008/07/javafx_sphere_1.png" alt="" width="322" height="323" />Now we will just add two thing, a effect and a radial gradient.</p>
<p>First we’ll just add javafx.scene.effect.* to our import list and just call the gaussian blur effect in our ellipse with</p>
<div class="dp-highlighter nogutter">
<ol class="dp-j">
<li class="alt">
<pre><span><span>effect: GaussianBlur{ radius: </span><span class="number">20</span><span> } </span></span></pre>
</li>
</ol>
</div>
<div class="dp-highlighter nogutter">
<ol class="dp-j">
<li class="alt">
<pre><span><span>effect: GaussianBlur{ radius: </span><span class="number">20</span><span> }</span></span>
<span><span>
</span></span></pre>
</li>
</ol>
</div>
<div class="dp-highlighter nogutter">(<a href="http://silveiraneto.net/2008/07/31/javafx-creating-a-sphere-with-shadow/" target="_blank">more</a>)</div>
<h3 class="dp-highlighter nogutter"></h3>
<div class="dp-highlighter nogutter">
<h2>Another Demo from silveiraneto.net: JavaFX, game demo</h2>
<p><a href="http://silveiraneto.net/2008/08/24/javafx-game-demo/" target="_blank">From James Weaver&#8217;s Blog  I found another intersting JavaFx demo made by  Silveira Neto. </a></p>
<p>I&#8217;ve featured Silveira Neto&#8217;s JavaFX work (play?) in a couple of <a href="http://learnjavafx.typepad.com/weblog/2008/08/dragging-graphi.html" target="_blank">recent</a> <a href="http://learnjavafx.typepad.com/weblog/2008/08/i-hear-voices-p.html" target="_blank">posts</a>, and it appears that he&#8217;s had gaming on his mind lately.  Silveira is a CS student, CEJUG member and Sun Campus Ambassador at Federal University of Ceará.</p>
<p style="text-align:center;"><a href="http://silveiraneto.net/2008/08/24/javafx-game-demo/" target="_blank"><img class="aligncenter" style="border:0 none;" title="Netoblackdotgame" src="http://learnjavafx.typepad.com/weblog/images/2008/08/25/netoblackdotgame.png" border="0" alt="Netoblackdotgame" width="450" height="360" /></a></p>
<p>His latest creation, shown above, is a game in which the player tries to vacuum up the dirty clouds with a sphere-shaped cleaner.  It demonstrates several techniques in JavaFX, such as creating a side-scrolling game, capturing keyboard input, and ascertaining when a graphical object intersects with a pixel in another graphical object.  You can see more information, including the source code and a YouTube video of the game being played, from <a href="http://silveiraneto.net/2008/08/24/javafx-game-demo/" target="_blank">Silveira&#8217;s blog post</a>.</p>
<p>In a prior post, Silveira discusses <a href="http://silveiraneto.net/2008/08/18/javafx-side-scrolling-gamming/" target="_blank">how to create a side-scrolling game in JavaFX</a>, showing the classes that he&#8217;s building to support it.</div>
<p style="text-align:right;"><em>[wikipedia.org]<br />
[http://javafx.com/]<br />
[http://silveiraneto.net/]<br />
[http://learnjavafx.typepad.com]<br />
[javapassion.com]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/09/07/javafx-tutorials-and-demos&amp;title=JavaFX: Tutorials and Demos" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mauriziostorani.wordpress.com/467/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mauriziostorani.wordpress.com/467/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/467/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/467/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=467&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/09/07/javafx-tutorials-and-demos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://blogs.zdnet.com/Burnette/images/thumb-java-duke-guitar.png" medium="image">
			<media:title type="html">JavaFX image</media:title>
		</media:content>

		<media:content url="http://javafx.com/releases/preview1/docs/tutorials/images/Java2DN.png" medium="image">
			<media:title type="html">Java2D Sample</media:title>
		</media:content>

		<media:content url="http://javafx.com/releases/preview1/docs/tutorials/images/JavaFXN.png" medium="image">
			<media:title type="html">JavaFX Sample</media:title>
		</media:content>

		<media:content url="http://javafx.com/releases/preview1/docs/tutorials/images/JavaFXDataBinding.png" medium="image">
			<media:title type="html">Data Binding Sample</media:title>
		</media:content>

		<media:content url="http://javafx.com/releases/preview1/docs/tutorials/images/StopwatchN.png" medium="image">
			<media:title type="html"> Stopwatch Widget</media:title>
		</media:content>

		<media:content url="http://silveiraneto.net/wp-content/uploads/2008/07/javafx_sphere_1.png" medium="image">
			<media:title type="html">JavaFX</media:title>
		</media:content>

		<media:content url="http://learnjavafx.typepad.com/weblog/images/2008/08/25/netoblackdotgame.png" medium="image">
			<media:title type="html">Netoblackdotgame</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>The Internet&#8217;s Biggest Security Hole: exploiting the internet routing protocol BGP (Border Gateway Protocol)</title>
		<link>http://mauriziostorani.wordpress.com/2008/09/05/the-internets-biggest-security-hole-exploits-the-internet-routing-protocol-bgp-border-gateway-protocol/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/09/05/the-internets-biggest-security-hole-exploits-the-internet-routing-protocol-bgp-border-gateway-protocol/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 08:40:38 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[Internet security]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[BGP]]></category>
		<category><![CDATA[Border Gateway Protocol]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=455</guid>
		<description><![CDATA[<img class="alignleft" style="margin:3px 8px;" src="http://www.blogiseverything.com/files/pics/largest_drain_hole03.jpg" alt="" width="240" height="179" />[<a href="http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html" target="_blank">...</a>] <a href="http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html" target="_blank">Two security researchers have demonstrated a new technique to stealthily</a> intercept internet traffic on a scale previously presumed to be unavailable to anyone outside of intelligence agencies like the National Security Agency.

The tactic exploits the internet routing protocol BGP (Border Gateway Protocol) to let an attacker surreptitiously monitor unencrypted internet traffic anywhere in the world, and even modify it before it reaches its destination.

<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/09/05/the-internets-biggest-security-hole-exploits-the-internet-routing-protocol-bgp-border-gateway-protocol&#38;title=The Internet's Biggest Security Hole: exploiting the internet routing protocol BGP (Border Gateway Protocol)" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=455&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin:3px 8px;" src="http://www.blogiseverything.com/files/pics/largest_drain_hole03.jpg" alt="" width="240" height="179" />[<a href="http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html" target="_blank">...</a>] <a href="http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html" target="_blank">Two security researchers have demonstrated a new technique to stealthily</a> intercept internet traffic on a scale previously presumed to be unavailable to anyone outside of intelligence agencies like the National Security Agency.</p>
<p>The tactic exploits the internet routing protocol BGP (Border Gateway Protocol) to let an attacker surreptitiously monitor unencrypted internet traffic anywhere in the world, and even modify it before it reaches its destination.</p>
<p>The demonstration is only the latest attack to highlight fundamental security weaknesses in some of the internet&#8217;s core protocols. Those protocols were largely developed in the 1970s with the assumption that every node on the then-nascent network would be trustworthy.  The world was reminded of the quaintness of that assumption in July, when researcher Dan Kaminsky disclosed a serious vulnerability in the DNS system. Experts say the new demonstration targets a potentially larger weakness.[<a href="http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html" target="_blank">...</a>] (<a href="http://blog.wired.com/27bstroke6/2008/08/revealed-the-in.html" target="_blank">more</a>)</p>
<h3 style="text-align:center;">O&#8217;Reilly TV: Dan Kaminsky on the DNS Bug of 2008</h3>
<p style="text-align:center;"><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='455' height='286' src='http://www.youtube.com/embed/B0dHDD9fFM4?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/09/05/the-internets-biggest-security-hole-exploits-the-internet-routing-protocol-bgp-border-gateway-protocol&amp;title=The Internet's Biggest Security Hole: exploiting the internet routing protocol BGP (Border Gateway Protocol)" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mauriziostorani.wordpress.com/455/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mauriziostorani.wordpress.com/455/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/455/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=455&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/09/05/the-internets-biggest-security-hole-exploits-the-internet-routing-protocol-bgp-border-gateway-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://www.blogiseverything.com/files/pics/largest_drain_hole03.jpg" medium="image" />

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
		<item>
		<title>R-OSGi and Distributed OSGi: differences and similarities</title>
		<link>http://mauriziostorani.wordpress.com/2008/09/04/r-osgi-and-distributed-osgi-differences-and-similarities/</link>
		<comments>http://mauriziostorani.wordpress.com/2008/09/04/r-osgi-and-distributed-osgi-differences-and-similarities/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 15:51:35 +0000</pubDate>
		<dc:creator>Maurizio Storani</dc:creator>
				<category><![CDATA[Distributed Systems]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Distributed OSGi]]></category>
		<category><![CDATA[R-OSGi]]></category>

		<guid isPermaLink="false">http://mauriziostorani.wordpress.com/?p=439</guid>
		<description><![CDATA[<a title="distributed-osgi" href="http://mauriziostorani.files.wordpress.com/2008/09/distributed-osgi1.jpg"><img class="alignleft size-full wp-image-444" style="margin:3px 8px;" title="distributed-osgi1" src="http://mauriziostorani.wordpress.com/files/2008/09/distributed-osgi1.jpg" alt="distributed-osgi" width="182" height="181" /></a>

<strong>ECF</strong> <strong>Eclipse Communication Framework</strong> is a framework for supporting the development of distributed Eclipse-based tools and  applications. It can be used to create other plugins, tools, or full Eclipse RCP applications  that require asynchronous point-to-point or publish-and-subscribe messaging.
<br />
<br />
<!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&#38;logo=http://mauriziostorani.wordpress.com/files/2008/07/logo_for_add.jpg&#38;pub=flamel&#38;url=http://mauriziostorani.wordpress.com/2008/09/04/r-osgi-and-distributed-osgi-differences-and-similarities&#38;title=R-OSGi and Distributed OSGi: differences and similarities" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END -->
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=439&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="distributed-osgi" href="http://mauriziostorani.files.wordpress.com/2008/09/distributed-osgi1.jpg"><img class="alignleft size-full wp-image-444" style="margin:3px 8px;" title="distributed-osgi1" src="http://mauriziostorani.files.wordpress.com/2008/09/distributed-osgi1.jpg?w=455" alt="distributed-osgi"   /></a></p>
<p><strong>ECF</strong> <strong>Eclipse Communication Framework</strong> is a framework for supporting the development of distributed Eclipse-based tools and  applications. It can be used to create other plugins, tools, or full Eclipse RCP applications  that require asynchronous point-to-point or publish-and-subscribe messaging.</p>
<p>ECF providing two things to developers:</p>
<ul>
<li><strong>Real-time communication and collaboration features for teams using Eclipse</strong> such as peer-to-peer file sharing, remote opening of Eclipse views, screen capture sharing, and real-time shared editing.</li>
<li><strong>A set of communications APIs and frameworks</strong> built upon existing protocols (like Google Talk, XMPP, SSH, HTTP/HTTPS, Rendevous, IRC, and others) for developers to add communications and messaging to their own Equinox-based plugins, or customize and extend the ECF applications. The APIs support peer-to-peer as well as client-server and multipoint messaging, and are focused around specific types of communication, such as peer-to-peer file transfer, presence/IM/chat, dynamic service discovery, remote OSGi services, channels for messaging, etc.</li>
</ul>
<p><strong>Introduction:  ECF Containers</strong></p>
<p>ECF introduces the concept of a communications <strong>container</strong>.  ECF containers represent access to         a protocol-specific communications context. For connection-oriented communications, an ECF container loosely         corresponds to the traditional notion of a communications <strong>session</strong>, but the more general container concept is also        useful for capturing context even if the communications are not session-oriented.</p>
<p>ECF containers can represent both point-to-point communications (e.g. client/server) or         publish-and-subscribe (group) communications.  Container instances can provide access to synchronous        communications only, asynchronous communications only, or both together.  This flexibility allows        many communications applications to be constructed out of one or more ECF containers&#8230;each of which        provides access to some specific communications context and some protocol(s) for communicating within        that context. (<a href="http://wiki.eclipse.org/Eclipse_Communication_Framework_Project" target="_blank">more</a>)</p>
<h2><strong>Distributed OSGi</strong></h2>
<p>The goal of <strong>distributed OSGi</strong> is to extend the OSGi framework for distributed computing capabilities by configuring an existing distributed computing software system (such as Web services, CORBA, or <a href="http://www.eclipse.org/ecf/" target="_blank">Eclipse ECF</a>) behind an OSGi service.  The goal of distributed OSGi is to allow a service running in one OSGi framework to invoke a service running in another, potentially remote, OSGi framework (meaning a framework in a JVM).  This excerpt makes it quite clear what this initiative is all about:</p>
<blockquote><p>The Distributed OSGi effort also seeks to enable &#8220;a service running in one OSGi framework to invoke a service running in another, potentially remote, OSGi framework (meaning a framework in a JVM),&#8221; Newcomer wrote. As the current OSGi standard only defines how services talk to each other only within a single JVM, &#8220;extensions are needed to allow services to talk with each other across multiple JVMs — thus the requirements for distributed OSGi on which the design is based&#8230;. Overall we recieved good feedback, and a lot of questions pertaining to work that still needs to be done. We hope to be able to publish the code to Apache and publish a draft of the design doc this summer, perhaps in August, after we have a chance to formally review the initial implementation with the EEG membership, and get their blessing (no doubt there will be some changes as well since this is just the start).&#8221; he said.</p></blockquote>
<p><span class="Article_Date"><span class="Article_Date"><span class="txt">In <a rel="nofollow" href="http://blogs.iona.com/newcomer/archives/000569.html" target="_blank">a blog post following the Distributed OSGi demonstration</a> in Berlin, Newcomer wrote: </span></span></span></p>
<blockquote><p><span class="Article_Date"><span class="Article_Date"><span class="txt">&#8220;The goal of distributed OSGi is to extend the OSGi framework for distributed computing capabilities by configuring an existing distributed computing software system (such as Web services, CORBA, or Eclipse ECF [Eclipse Communication Framework]) behind an OSGi service. The demo showed a Web services solution using Apache CXF as the distribution software, but the design should work with any distributed computing system.&#8221;</span></span></span></p></blockquote>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<h2><strong><strong>R-OSGi</strong></strong></h2>
<p><strong>R-OSGi <span style="font-weight:normal;">runs as an OSGi bundle and facilitates distribution for arbitrary OSGi framework implementations.  All that a service provider framework has to do is registering a service for remote access. Subsequently, other peers can connect to the service provider peer and get access to the service. Remote services are accessed in an entirely transparent way. For every remote service, a local proxy bundle is generated that registers the same service. Local service clients can hence access the remote service in the same way and without regarding distribution.  R-OSGi, a distributed middleware platform that extends the centralized industry-standard OSGi module interface to support distributed module management. To the developer, R-OSGi looks like a standard module management tool. However, at deployment time R-OSGi can be used to turn the application into a distributed application by simply indicating where the different modules should be deployed. In particular, at run time R-OSGi represents distributed failures as conventional module insertion and withdrawal operations so that the logic to deal with failures is the same as that employed to deal with dependencies among standard modules. In doing so, R-OSGi greatly simplifies the development of distributed applications with no performance cost.  Hal Hildebrand in his blog said:</span></strong></p>
<blockquote><p>At this year&#8217;s EclipseCon, I went to a talk by Jan Rellermeyer regarding his R-OSGi system.  His stuff is open source, which <a href="http://r-osgi.sourceforge.net/" target="_blank">you can find here</a>.  The slides for his talk are available <a href="http://tinyurl.com/2ges8x" target="_blank">here</a>. It&#8217;s extremely interesting and I would suggest anyone who&#8217;s interested in the distributed OSGi stream to both download and play with the r-OSGi system and to read the paper and presentation. In particular, I think that his discussion of the alternatives vis a vis Jini, UPnP and SLP is quite illuminating. (<a href="http://www.tensegrity.hellblazer.com/2007/03/distrubuting_osgi.html" target="_blank">more</a>)</p></blockquote>
<p>NB the presentation slides for R-OSGi have just been <a href="http://eclipsezilla.eclipsecon.org/attachment.cgi?id=510&amp;action=view" target="_blank">posted </a>.</p>
<h2><strong>Differences between Distribuited OSGi and r-OSGi:</strong></h2>
<p><strong><span style="font-weight:normal;">Hal Hildebrand</span></strong> wrote the <strong>differences between Distribuited OSGi and r-OSGi:</strong></p>
<div class="entry-body">
<blockquote><p>A couple of people have asked about the differences between the implementation I have for a distributed OSGi framework and the framework described by Jan Rellermeyer (see my <a href="http://www.tensegrity.hellblazer.com/2007/03/distrubuting_osgi.html" target="_blank">previous entry on the subject</a>). In a nutshell, the primary difference is that the way services are advertised and discovered is completely hidden in my implementation. The implications, though, that this small difference has on usability and integration with existing OSGi frameworks is rather profound.</p>
<pre>    // obtain the reference to the RemoteOSGi Service

    // insert standard method for obtaining services

    RemoteOSGiService remotingService = ....</pre>
<pre>    // create listener for the desired remote service 

    DiscoveryListener listener = .....</pre>
<pre>    // create the properties for the listener service

    String[] ifaces = new String[] {"ch.ethz.iks.r_osgi.sample.api.ServiceInterface"};

    Dictionary props = new HashTable();

    props.put(DiscoverListener.SERVICE_INTERFACES, ifaces);</pre>
</blockquote>
</div>
<blockquote><p>In Jan&#8217;s implementation, the primary interface to the system &#8211; from the client&#8217;s POV &#8211; is the RemoteOSGiService interface. To make use of a remote service the client does the following: (<a href="http://www.tensegrity.hellblazer.com/2007/03/distributing_osgi_differences_1.html" target="_blank">more</a>)</p></blockquote>
<p style="text-align:right;"><em><br />
[http://blogs.iona.com/newcomer]<br />
[http://r-osgi.sourceforge.net/]<br />
[http://www.tensegrity.hellblazer.com]<br />
[http://www.eweek.com]<br />
[http://java.dzone.com]</em></p>
<p><!-- AddThis Button BEGIN --> <a title="Bookmark and Share" href="http://www.addthis.com/bookmark.php?wt=nw&amp;logo=http://mauriziostorani.files.wordpress.com/2008/07/logo_for_add.jpg&amp;pub=flamel&amp;url=http://mauriziostorani.wordpress.com/2008/09/04/r-osgi-and-distributed-osgi-differences-and-similarities&amp;title=R-OSGi and Distributed OSGi: differences and similarities" target="_blank"><img class="alignleft" src="http://s9.addthis.com/button1-bm.gif" border="0" alt="Bookmark and Share" width="125" height="16" /></a> <!-- AddThis Button END --></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mauriziostorani.wordpress.com/439/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mauriziostorani.wordpress.com/439/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mauriziostorani.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mauriziostorani.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mauriziostorani.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mauriziostorani.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mauriziostorani.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mauriziostorani.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mauriziostorani.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mauriziostorani.wordpress.com/439/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mauriziostorani.wordpress.com&amp;blog=3783400&amp;post=439&amp;subd=mauriziostorani&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mauriziostorani.wordpress.com/2008/09/04/r-osgi-and-distributed-osgi-differences-and-similarities/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/5930d077680b040da317556c049a7266?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mauriziostorani</media:title>
		</media:content>

		<media:content url="http://mauriziostorani.files.wordpress.com/2008/09/distributed-osgi1.jpg" medium="image">
			<media:title type="html">distributed-osgi1</media:title>
		</media:content>

		<media:content url="http://s9.addthis.com/button1-bm.gif" medium="image">
			<media:title type="html">Bookmark and Share</media:title>
		</media:content>
	</item>
	</channel>
</rss>
