<?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/"
  >

<channel>
  <title>Embarcadero Blogs Master Site Feed</title>
  <link>http://blogs.embarcadero.com/feeds</link>
  <description>Shows all posts, comments, and pages from all blogs on this WPMU powered site</description>
  <pubDate></pubDate>
  <generator>http://wordpress.org/?v=2.6.2</generator>
  <language>en</language>
  <item>
    <title>Graphics vs Text : Picture superiority effect</title>
    <link>http://db-optimizer.blogspot.com/2009/11/graphics-vs-text-picture-superiority.html</link>
    <pubDate>Fri, 20 Nov 2009 14:41:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<div><span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px; ">According to the <b>picture superiority effect</b>, concepts are much more likely to be remembered experientially if they are presented as <a href="http://en.wikipedia.org/wiki/Picture" title="Picture" class="mw-redirect" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">pictures</a> rather than as <a href="http://en.wikipedia.org/wiki/Word" title="Word" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">words</a>.According to <a href="http://en.wikipedia.org/wiki/Dual-coding_theory" title="Dual-coding theory" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">dual-coding theory</a> by <a href="http://en.wikipedia.org/wiki/Allan_Paivio" title="Allan Paivio" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">Allan Paivio</a> (1971, 1986), memory exists either (or both) verbally or "imaginally". <a href="http://en.wikipedia.org/wiki/Concrete" title="Concrete" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">Concrete</a> concepts presented as pictures are encoded into both systems; however, <a href="http://en.wikipedia.org/wiki/Abstraction" title="Abstraction" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; ">abstract</a> concepts are recorded only verbally.</span></div><div><a href="http://en.wikipedia.org/wiki/Picture_superiority_effect">http://en.wikipedia.org/wiki/Picture_superiority_effect</a></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-3627115194512143064?l=db-optimizer.blogspot.com' alt='' /></div>]]></content:encoded>
      </item>
  <item>
    <title>Static Analysis - Metrics - Volumns</title>
    <link>http://blogs.embarcadero.com/michaelrozlog/2009/11/20/36998/</link>
    <comments>http://blogs.embarcadero.com/michaelrozlog/2009/11/20/36998/#comments</comments>
    <pubDate>Fri, 20 Nov 2009 17:06:18 +0000</pubDate>
    <dc:creator>Michael Rozlog</dc:creator>
    
		<category><![CDATA[Uncategorized]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/michaelrozlog/?p=36998</guid>
    <description><![CDATA[As many of you know, I really like Metrics and Audits for helping build better code.  One thing to remember when doing Metrics, make sure to compare apples to apples and not apple to oranges to steak!
Many metrics are based on the following:

Methods; a sub routine of an object
Objects;
Classes;
Files
Lines

If you try to compare or make [...]]]></description>
      <content:encoded><![CDATA[<p>As many of you know, I really like Metrics and Audits for helping build better code.  One thing to remember when doing Metrics, make sure to compare apples to apples and not apple to oranges to steak!</p>
<p>Many metrics are based on the following:</p>
<ul>
<li>Methods; a sub routine of an object</li>
<li>Objects;</li>
<li>Classes;</li>
<li>Files</li>
<li>Lines</li>
</ul>
<p>If you try to compare or make assumptions with metrics that focus on a Method level like Cyclomatic Complexity (CC) and try to relate that to Lines of Code (LOC), the observations are going to be off, really off!</p>
<p>Because having a high or low Cyclomatic complexity has nothing to really do with how many lines of code make up a class or file.  I could have a million lines of code and have a perfectly defined class that has very optimized methods and so Cyclomatic Complexity never gets above 8.</p>
<p>However, looking at Cyclomatic Complexity (CC) and working with Maximum Size of Operation (MSOO) can help determine if there are long methods that have high complexity, which then can be used to help determine a refactoring plan.</p>
<p>Always try to keep data grouped together.</p>
<p>Mike</p>
<p>More to come&#8230;</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/michaelrozlog/?p=36998&amp;akst_action=share-this" onclick="akst_share('36998', 'http%3A%2F%2Fblogs.embarcadero.com%2Fmichaelrozlog%2F2009%2F11%2F20%2F36998%2F', 'Static+Analysis+-+Metrics+-+Volumns'); return false;" title="Post to del.icio.us, etc." id="akst_link_36998" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Static%20Analysis%20-%20Metrics%20-%20Volumns&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fmichaelrozlog%2F2009%2F11%2F20%2F36998%2F" id="akst_email_36998" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>Touch Demo Park IV</title>
    <link>http://feedproxy.google.com/~r/ChrisBensenBlog/~3/oCeuwKqze_w/touch-demo-park-iv.html</link>
    <pubDate>Thu, 19 Nov 2009 13:00:00 +0000</pubDate>
    <dc:creator>Chris Bensen</dc:creator>
    <content:encoded><![CDATA[Previously I posted <a href="http://chrisbensen.blogspot.com/2009/09/touch-demo-part-i.html">Part I</a>, <a href="http://chrisbensen.blogspot.com/2009/10/touch-demo-part-ii.html">Part II</a> and <a href="http://chrisbensen.blogspot.com/2009/10/touch-demo-part-iii.html">Partk III</a> of the Touch Demo.<br /><br />This is the final step of the touch demo where I will be adding the inertia processing and mouse support. Mouse support is easy but requires a minor refactoring of the touch message handler so the mouse can piggy back on it. For CodeRage I did add a touch keyboard but I will leave that as an exercise for the user.<br /><br />And now you can <a href="http://cc.embarcadero.com/item/27469">download source code</a> from CodeCentral for all four demos.<br /><br />Inertia processing requires the Manipulations unit. Then the object that is to be manipulated, in this case TGlowSpot, should implement the _IManipulationsEvents interface which is a COM event sync. Here is how that class changed:<br /><pre><br />  TGlowSpot = class(TInterfacedObject, _IManipulationEvents)<br />  private<br />    FInertia: IInertiaProcessor;<br />    FManipulator: IManipulationProcessor;<br />    FInertiaCookie, FManipulatorCookie: LongInt;<br />    FCompleted: BOOL;<br />  public<br />    X, Y, Radius: Integer;<br />    Alpha: Extended;<br />    FadeIn: Boolean;<br />    Color: TColor;<br />    ID: Integer;<br /><br />  protected<br />    procedure DoTouch(const APoint: TPoint; AID: Integer; ATouchMessage: TTouchMessage);<br /><br />    { _IManipulationEvents }<br />    function ManipulationStarted(X: Single; Y: Single): HRESULT; stdcall;<br />    function ManipulationDelta(X: Single; Y: Single; translationDeltaX: Single;<br />      translationDeltaY: Single; scaleDelta: Single; expansionDelta: Single;<br />      rotationDelta: Single; cumulativeTranslationX: Single;<br />      cumulativeTranslationY: Single; cumulativeScale: Single;<br />      cumulativeExpansion: Single; cumulativeRotation: Single): HRESULT;<br />      stdcall;<br />    function ManipulationCompleted(X: Single; Y: Single;<br />      cumulativeTranslationX: Single; cumulativeTranslationY: Single;<br />      cumulativeScale: Single; cumulativeExpansion: Single;<br />      cumulativeRotation: Single): HRESULT; stdcall;<br />  public<br />    constructor Create(AParent: TWinControl);<br /><br />    procedure Paint(Canvas: TDirect2DCanvas);<br />    procedure Disconnect;<br />    procedure ProcessInertia;<br />  end;<br />...<br /></pre><br /><br />Each TGlowSpot needs to hold on to an instance of the inertia processor and the manipulation processor and then connect up to them with the event sync. That is done in the constructor:<br /><pre><br />constructor TGlowSpot.Create(AParent: TWinControl);<br />begin<br />  inherited Create;<br />  Alpha := 1;<br />  Radius := 80;<br />  FadeIn := False;<br />  Randomize;<br />  Color := RGB(Random(255), Random(256), Random(256));<br />  ID := -1;<br />  FCompleted := True;<br />  ID := -1;<br />  FCompleted := True;<br /><br />  FInertia := CreateComObject(CLSID_IInertiaProcessor) as IInertiaProcessor;<br />  FManipulator := CreateComObject(CLSID_IManipulationProcessor) as IManipulationProcessor;<br />  InterfaceConnect(FInertia, _IManipulationEvents, Self, FInertiaCookie);<br />  InterfaceConnect(FManipulator, _IManipulationEvents, Self, FManipulatorCookie);<br /><br />  FInertia.put_DesiredDeceleration(0.001);<br /><br />  FInertia.put_BoundaryLeft(200);<br />  FInertia.put_BoundaryTop(200);<br />  FInertia.put_BoundaryRight(AParent.Width - 200);<br />  FInertia.put_BoundaryBottom(AParent.Height - 200);<br /><br />  FInertia.put_ElasticMarginLeft(200);<br />  FInertia.put_ElasticMarginTop(200);<br />  FInertia.put_ElasticMarginRight(200);<br />  FInertia.put_ElasticMarginBottom(200);<br />end;<br /></pre><br /><br />And then of the disconnect is done like this:<br /><pre><br />procedure TGlowSpot.Disconnect;<br />begin<br />  InterfaceDisconnect(FInertia, _IManipulationEvents, FInertiaCookie);<br />  InterfaceDisconnect(FManipulator, _IManipulationEvents, FManipulatorCookie);<br />end;<br /></pre><br /><br />The inertia processing is handled with each WM_TOUCH message that is fired. It's pretty simple really, if there is a move, call the manipulation COM object's ProcessMove, and do the same with down. Up is a bit different because of the inertia but all you need to do is set the velocity and the location.<br /><pre><br />procedure TGlowSpot.DoTouch(const APoint: TPoint; AID: Integer;<br />  ATouchMessage: TTouchMessage);<br />var<br />  Vx, Vy: Single;<br />begin<br />  case ATouchMessage of<br />    tmMove:<br />    begin<br />      X := APoint.X;<br />      Y := APoint.Y;<br />      FManipulator.ProcessMove(AID, APoint.X, APoint.Y);<br />    end;<br /><br />    tmDown:<br />    begin<br />      X := APoint.X;<br />      Y := APoint.Y;<br />      FManipulator.ProcessDown(AID, APoint.X, APoint.Y);<br />    end;<br /><br />    tmUp:<br />    begin<br />      ID := -1;<br /><br />      FManipulator.ProcessUp(AID, APoint.X, APoint.Y);<br /><br />      FManipulator.GetVelocityX(Vx);<br />      FManipulator.GetVelocityY(Vy);<br /><br />      FInertia.put_InitialVelocityX(Vx);<br />      FInertia.put_InitialVelocityY(Vy);<br /><br />      FInertia.put_InitialOriginX(X);<br />      FInertia.put_InitialOriginY(Y);<br /><br />      FCompleted := False;<br />    end;<br />  end;<br />end;<br /><br />function TGlowSpot.ManipulationCompleted(X, Y, cumulativeTranslationX,<br />  cumulativeTranslationY, cumulativeScale, cumulativeExpansion,<br />  cumulativeRotation: Single): HRESULT;<br />begin<br />  Result := S_OK;<br />end;<br /><br />function TGlowSpot.ManipulationDelta(X, Y, translationDeltaX, translationDeltaY,<br />  scaleDelta, expansionDelta, rotationDelta, cumulativeTranslationX,<br />  cumulativeTranslationY, cumulativeScale, cumulativeExpansion,<br />  cumulativeRotation: Single): HRESULT;<br />begin<br />  Inc(Self.X, Round(translationDeltaX));<br />  Inc(Self.Y, Round(translationDeltaY));<br />  Result := S_OK;<br />end;<br /><br />function TGlowSpot.ManipulationStarted(X, Y: Single): HRESULT;<br />begin<br />  Result := S_OK;<br />end;<br /><br />procedure TGlowSpot.ProcessInertia;<br />begin<br />  if not FCompleted then<br />    FInertia.Process(FCompleted);<br />end;<br /></pre><br /><br />The last bit of code I want to talk about is the mouse handling. I refactored the handling of the WM_TOUCH message into WMTouch and ProcessTouchMessages. ProcessTouchMessages is the common function that the mouse message can call to get the same inertia behavior.<br /><pre><br />procedure TTouchForm.WMTouch(var Message: TMessage);<br /><br />  function TouchPointToPoint(const TouchPoint: TTouchInput): TPoint;<br />  begin<br />    Result := Point(TouchPoint.X div 100, TouchPoint.Y div 100);<br />    PhysicalToLogicalPoint(Handle, Result);<br />  end;<br /><br />var<br />  TouchInputs: array of TTouchInput;<br />  TouchInput: TTouchInput;<br />  Handled: Boolean;<br />  Point: TPoint;<br />  TouchMessage: TTouchMessage;<br />begin<br />  Handled := False;<br />  SetLength(TouchInputs, Message.WParam);<br />  GetTouchInputInfo(Message.LParam, Message.WParam, @TouchInputs[0],<br />    SizeOf(TTouchInput));<br />  try<br />    for TouchInput in TouchInputs do<br />    begin<br />      Point := TouchPointToPoint(TouchInput);<br /><br />      if (TouchInput.dwFlags and TOUCHEVENTF_MOVE) <> 0 then<br />        TouchMessage := tmMove<br />      else if (TouchInput.dwFlags and TOUCHEVENTF_UP) <> 0 then<br />        TouchMessage := tmUp<br />      else if (TouchInput.dwFlags and TOUCHEVENTF_DOWN) <> 0 then<br />        TouchMessage := tmDown;<br /><br />      ProcessTouchMessages(Point, TouchInput.dwID, TouchMessage);<br />    end;<br /><br />    Handled := True;<br />  finally<br />    if Handled then<br />      CloseTouchInputHandle(Message.LParam)<br />    else<br />      inherited;<br />  end;<br />end;<br /><br />function TTouchForm.ProcessTouchMessages(const APoint: TPoint; ID: Integer;<br />  TouchMessage: TTouchMessage): TGlowSpot;<br />var<br />  Spot: TGlowSpot;<br />begin<br />  Result := nil;<br />  Spot := FindSpot(ID);<br /><br />  if Spot = nil then<br />  begin<br />    Spot := FindSpot(APoint);<br /><br />    if Spot <> nil then<br />      Spot.ID := ID;<br />  end;<br /><br />  if Spot = nil then<br />  begin<br />    Spot := TGlowSpot.Create(Self);<br />    Spot.ID := ID;<br />    FSpots.Add(Spot);<br />  end;<br /><br />  Spot.DoTouch(APoint, ID, TouchMessage);<br />  Result := Spot;<br />end;<br /></pre><br /><br />And last the mouse handling functions with the check for ssTouch in the Shift parameter. If that check wasn't there each message would happen effectively twice because the touch messages also send mouse messages for backwards compatibility with applications that don't support touch.<br /><pre><br />procedure TTouchForm.FormMouseDown(Sender: TObject; Button: TMouseButton;<br />  Shift: TShiftState; X, Y: Integer);<br />begin<br />  if ssTouch in Shift then Exit;<br />  FMouseDown := True;<br />  ProcessTouchMessages(Point(X, Y), 0, tmDown);<br />end;<br /><br />procedure TTouchForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,<br />  Y: Integer);<br />begin<br />  if ssTouch in Shift then Exit;<br />  if FMouseDown then<br />    ProcessTouchMessages(Point(X, Y), 0, tmMove);<br />end;<br /><br />procedure TTouchForm.FormMouseUp(Sender: TObject; Button: TMouseButton;<br />  Shift: TShiftState; X, Y: Integer);<br />var<br />  Spot: TGlowSpot;<br />begin<br />  if ssTouch in Shift then Exit;<br />  Spot := ProcessTouchMessages(Point(X, Y), 0, tmUp);<br />  Spot.ID := -1;<br />  FMouseDown := False;<br />end;<br /></pre><br /><br />I just realized that there is a bug in the program. It will run just fine but crash pretty bad if it runs too long. I guess I never demoed it very long before. So I'll leave debugging this crash as an exercise for the user.<div class="blogger-post-footer">
<img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8857431988988627285-598573211965477803?l=chrisbensen.blogspot.com' alt='' /></div><img src="http://feeds.feedburner.com/~r/ChrisBensenBlog/~4/oCeuwKqze_w" height="1" width="1"/>]]></content:encoded>
      </item>
  <item>
    <title>Tech Republic: A developer&#8217;s hands-on review of Delphi 2010</title>
    <link>http://blogs.embarcadero.com/davidi/2009/11/19/39882/</link>
    <comments>http://blogs.embarcadero.com/davidi/2009/11/19/39882/#comments</comments>
    <pubDate>Thu, 19 Nov 2009 12:15:24 +0000</pubDate>
    <dc:creator>David Intersimone</dc:creator>
    
		<category><![CDATA[CodeGear]]></category>

		<category><![CDATA[DataSnap]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Embarcadero]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[Pascal]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[Touch]]></category>

		<category><![CDATA[Windows]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/davidi/?p=39882</guid>
    <description><![CDATA[Justin James, in his Tech Republic Programming and Development blog, has posted a review of the new Delphi 2010.  The sub-text for the online review article says, "According to Justin James, .NET and Visual C++ developers should check out Embarcadero’s Delphi 2010&#8230;".   Our Embarcadero Delphi is one of the most respected and widely used Rapid [...]]]></description>
      <content:encoded><![CDATA[<p>Justin James, in his <a href="http://blogs.techrepublic.com.com/programming-and-development/">Tech Republic Programming and Development</a> blog, has posted a review of the new Delphi 2010.  The sub-text for the online review article says, "According to Justin James, .NET and Visual C++ developers should check out Embarcadero’s Delphi 2010&#8230;".   Our <a href="http://www.embarcadero.com/products/delphi">Embarcadero Delphi</a> is one of the most respected and widely used <a href="http://www.embarcadero.com/products/delphi">Rapid Application Development</a> (RAD) environments.  Over 1.7 million developers worldwide choose Delphi over other tools because Delphi radically speeds desktop, workstation, touch, kiosk, and Web application development without sacrificing an ounce of programming power or control. Applications built with Delphi are lightning fast, compact, provide rich UIs, and can connect with virtually any database or data source “out-of-the-box”.</p>
<p>A few other tidbits from <a href="http://blogs.techrepublic.com.com/programming-and-development/?p=1924">the review</a>:</p>
<ul>
<li>"the good folks at Embarcadero came up with a brilliant idea called IDE Insight"</li>
<li>"Another item that I really like is DataSnap, which is similar to WCF in concept, but in execution, it feels much smoother."</li>
<li>"Delphi 2010 supports all sorts of new goodies, including multi-touch and gestures &#8230; beating Visual Studio 2010 to market by nearly six months"</li>
<li>"Delphi 2010 has good tools for debugging multithreaded applications, which is an increasingly important item"</li>
<li>"If you want to do Windows development, and you want to work with native code in a native style, I think that Delphi 2010 is a very productive tool."</li>
</ul>
<p>Finally, in the summary, Justin gives the Delphi team the ultimate developer compliment, "Every time I work with the Embarcadero team, I feel like they are writing the tools that they would love to use; they really are developers’ developers, and they understand the development process very well and implement it as tools quite nicely."</p>
<p>Read the complete review at <a href="http://blogs.techrepublic.com.com/programming-and-development/?p=1924">http://blogs.techrepublic.com.com/programming-and-development/?p=1924</a></p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/davidi/?p=39882&amp;akst_action=share-this" onclick="akst_share('39882', 'http%3A%2F%2Fblogs.embarcadero.com%2Fdavidi%2F2009%2F11%2F19%2F39882%2F', 'Tech+Republic%3A+A+developer%26%238217%3Bs+hands-on+review+of+Delphi+2010'); return false;" title="Post to del.icio.us, etc." id="akst_link_39882" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Tech%20Republic%3A%20A%20developer%26%238217%3Bs%20hands-on%20review%20of%20Delphi%202010&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fdavidi%2F2009%2F11%2F19%2F39882%2F" id="akst_email_39882" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>Oracle's Cardinality Hint, Profiles, Outlines and SQL Baselines</title>
    <link>http://db-optimizer.blogspot.com/2009/11/oracles-cardinality-hint-profiles.html</link>
    <pubDate>Wed, 18 Nov 2009 16:30:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<div><span class="Apple-style-span"  style="font-size:small;">This is more of a bookmark for a future blog post on using the Cardinality hint. This post by Greg Rahn give some example and I posted in the comments some more detailed examples:</span></div><div><a href="http://structureddata.org/2007/11/21/troubleshooting-bad-execution-plans/"><span class="Apple-style-span"  style="font-size:small;">http://structureddata.org/2007/11/21/troubleshooting-bad-execution-plans/</span></a></div><div><span class="Apple-style-span"  style="font-size:small;">Here is another excellent post by Kerry Osborne on SQL Baselines:</span></div><div><a href="http://kerryosborne.oracle-guy.com/2009/04/oracle-11g-sql-plan-management-sql-plan-baselines/"><span class="Apple-style-span"  style="font-size:small;">http://kerryosborne.oracle-guy.com/2009/04/oracle-11g-sql-plan-management-sql-plan-baselines/</span></a></div><div><span class="Apple-style-span"  style="font-size:small;">which made me ask in the comments why one would want to use Outlines vs Profiles vs Baselines, in particular what advantages if any Profiles have.</span></div><div><span class="Apple-style-span"  style="font-size:small;"><span class="Apple-style-span"  style=" color: rgb(68, 68, 68); font-family:'Lucida Grande', Verdana, Arial, sans-serif;"><blockquote>Interesting question. I had an online dialog with a guy name Randolf Geist a year ago or so where he convinced me to look closer at SQL Profiles. Up until that point I had only seen SQL Profiles that were created by the SQL Tuning Advisor and I was not very impressed. They tended to go sour after a little time because of the OPT_ESTIMATE hint, but I digress. The answer is yes, I think SQL Profiles have a couple of advantages over Outlines at this point.</blockquote></span></span></div><div><span class="Apple-style-span"   style="color: rgb(68, 68, 68); font-family:'Lucida Grande', Verdana, Arial, sans-serif;font-size:10px;"><blockquote><p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "><span class="Apple-style-span"  style="font-size:small;">1. They have the ability to be used on multiple statements (ones that are the same except for literals) using the force matching signature bit.</span></p><p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "><span class="Apple-style-span"  style="font-size:small;">2. They are newer. I’m starting to worry about Outlines getting buggy due to lack of attention. Documentation says they are deprecated and although they continue to work in 11g, I am a bit leery of continuing to use them at this point. (the whole hint based mechanism is tricky enough as it is).</span></p><p style="margin-top: 0.5em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; "><span class="Apple-style-span"  style="font-size:small;">11gR2 includes a procedure to migrate Outlines to Baselines by the way (DBMS_SPM.MIGRATE_STORED_OUTLINE). At any rate, I am not implementing Outlines at this point.</span></p></blockquote></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-6048266860049586704?l=db-optimizer.blogspot.com' alt='' /></div>]]></content:encoded>
      </item>
  <item>
    <title>Simplify ER/Studio Licensing &amp; Provisioning with Embarcadero ToolCloud™</title>
    <link>http://datamodel.wordpress.com/2009/11/18/simplify-erstudio-licensing-provisioning-with-embarcadero-toolcloud%e2%84%a2/</link>
    <pubDate>Wed, 18 Nov 2009 08:18:32 +0000</pubDate>
    <dc:creator>Josh Howard</dc:creator>
    <content:encoded><![CDATA[Simplify ER/Studio Licensing &#38; Provisioning with Embarcadero ToolCloud™
Most ER/Studio users do more than just physical database design or data architecture. We’re data architects, business analysts, DBAs and developers, using a wide array of different tools from different vendors to support our application and database projects. Just managing the licensing and provisioning of these tools can [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=datamodel.wordpress.com&blog=6271401&post=258&subd=datamodel&ref=&feed=1" />]]></content:encoded>
      </item>
  <item>
    <title>Migration Webinar follow-up&#8230;</title>
    <link>http://blogs.embarcadero.com/michaelrozlog/2009/11/18/36995/</link>
    <comments>http://blogs.embarcadero.com/michaelrozlog/2009/11/18/36995/#comments</comments>
    <pubDate>Wed, 18 Nov 2009 15:02:19 +0000</pubDate>
    <dc:creator>Michael Rozlog</dc:creator>
    
		<category><![CDATA[Delphi]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/michaelrozlog/?p=36995</guid>
    <description><![CDATA[All,
Thanks for putting up with my voice yesterday.  I hope some of the information was worth the time!  As I stated yesterday, the Parser.exe created by Ander&#8217;s is available on his blog:  http://blogs.embarcadero.com/ao/ and the actual Code Central location is:  http://cc.embarcadero.com/item/27398
I was also thinking about doing a part II to the session, where we go [...]]]></description>
      <content:encoded><![CDATA[<p>All,</p>
<p>Thanks for putting up with my voice yesterday.  I hope some of the information was worth the time!  As I stated yesterday, the Parser.exe created by Ander&#8217;s is available on his blog:  http://blogs.embarcadero.com/ao/ and the actual Code Central location is:  http://cc.embarcadero.com/item/27398</p>
<p>I was also thinking about doing a part II to the session, where we go through the entire Sanctuary program that we only hit on for about 5 minutes (no slides, just code).  I think there are a few things that I could show that may help other people.  Let me know your thoughts of if you think it would be worth it.</p>
<p>Again, thanks all for coming!</p>
<p>Mike</p>
<p>More to come&#8230;</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/michaelrozlog/?p=36995&amp;akst_action=share-this" onclick="akst_share('36995', 'http%3A%2F%2Fblogs.embarcadero.com%2Fmichaelrozlog%2F2009%2F11%2F18%2F36995%2F', 'Migration+Webinar+follow-up%26%238230%3B'); return false;" title="Post to del.icio.us, etc." id="akst_link_36995" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Migration%20Webinar%20follow-up%26%238230%3B&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fmichaelrozlog%2F2009%2F11%2F18%2F36995%2F" id="akst_email_36995" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>DBArtisan now supports Microsoft SQL Azure databases</title>
    <link>http://blogs.embarcadero.com/davidi/2009/11/18/39875/</link>
    <comments>http://blogs.embarcadero.com/davidi/2009/11/18/39875/#comments</comments>
    <pubDate>Wed, 18 Nov 2009 12:18:57 +0000</pubDate>
    <dc:creator>David Intersimone</dc:creator>
    
		<category><![CDATA[Cloud Computing]]></category>

		<category><![CDATA[DBArtisan]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[Database Administration]]></category>

		<category><![CDATA[Embarcadero]]></category>

		<category><![CDATA[Products]]></category>

		<category><![CDATA[SQL]]></category>

		<category><![CDATA[SQL Azure]]></category>

		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ednfront]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/davidi/?p=39875</guid>
    <description><![CDATA[Today, at the Microsoft Professional Developers Conference (PDC&#8217;09) in Los Angeles, Embarcadero Technologies announced DBArtisan for the SQL Azure database from Microsoft. The special edition of DBArtisan helps organizations expedite the deployment and simplify the management of cloud-based databases and applications.
DBArtisan for SQL Azure provides for basic database administration at the schema level, including object management [...]]]></description>
      <content:encoded><![CDATA[<p>Today, at the <a href="http://microsoftpdc.com/">Microsoft Professional Developers Conference (PDC&#8217;09)</a> in Los Angeles, <a href="http://www.embarcadero.com/">Embarcadero Technologies</a> announced <a href="http://www.embarcadero.com/products/dbartisan/azure">DBArtisan for the SQL Azure database</a> from Microsoft. The special edition of DBArtisan helps organizations expedite the deployment and simplify the management of cloud-based databases and applications.</p>
<p>DBArtisan for SQL Azure provides for basic <a href="http://www.embarcadero.com/">database administration</a> at the schema level, including object management and editors, SQL editing and schema extraction, as well as migration utilities to facilitate data migration from <a href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx">Microsoft SQL Server to SQL Azure</a>. The tool enables enterprises to build symmetrical on-premise and cloud-based SQL Azure Database deployments, reducing in-house IT infrastructure costs and making certain data sets more readily available to offsite consumers.</p>
<p>Developers and database administrators can download a trial version of <a href="http://www.embarcadero.com/products/dbartisan/azure">DBArtisan for SQL Azure</a>.  Information about the steps to download and register the trial are listed on the DBArtisan for SQL Azure product page.  You&#8217;ll also need a Microsoft SQL Azure account.</p>
<ul>
<li><a href="http://www.embarcadero.com/products/dbartisan/azure">DBArtisan for SQL Azure product page</a></li>
<li><a href="http://etnaweb04.embarcadero.com/news/press_releases/DBArtisan%20for-SQL-Azure-Database-from-Microsoft.php">Read the press release</a></li>
<li><a href="http://www.embarcadero.com/product_demo.php?file=http://altd.embarcadero.com/download/video/dbartisan/dbartisan-support-sql-server-azure-cloud.mp4">Watch the demonstration video</a></li>
<li><a href="http://www.embarcadero.com/products/dbartisan/azure">Download the trial version</a></li>
<li><a href="http://www.embarcadero.com/products/dbartisan">DBArtisan product page</a></li>
</ul>
<p class="akst_link"><a href="http://blogs.embarcadero.com/davidi/?p=39875&amp;akst_action=share-this" onclick="akst_share('39875', 'http%3A%2F%2Fblogs.embarcadero.com%2Fdavidi%2F2009%2F11%2F18%2F39875%2F', 'DBArtisan+now+supports+Microsoft+SQL+Azure+databases'); return false;" title="Post to del.icio.us, etc." id="akst_link_39875" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=DBArtisan%20now%20supports%20Microsoft%20SQL%20Azure%20databases&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fdavidi%2F2009%2F11%2F18%2F39875%2F" id="akst_email_39875" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>Explain Plan vs Real Plan on Oracle</title>
    <link>http://db-optimizer.blogspot.com/2009/11/explain-plan-vs-real-plan-on-oracle.html</link>
    <pubDate>Tue, 17 Nov 2009 08:46:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<span class="Apple-style-span"  style="font-size:small;">A good part of my presentation Friday at NoCOUG was on explain plan command being an estimate of the actual execution plan. Now on the Oracle-L forum list, I see the same question  being asked "</span><span class="Apple-style-span"  style="  border-collapse: collapse; color: rgb(0, 0, 128); font-family:Arial;"><span class="Apple-style-span"  style="font-size:small;">Under what conditions, could the plan I get out of ‘explain plan’ differ from what I get from running the sql statement?" and Tanel Poder giving a succinct clear list of reasons:</span></span><div><span class="Apple-style-span"   style="font-family:Arial;color:#000080;"><span class="Apple-style-span" style="border-collapse: collapse; "><span class="Apple-style-span"  style="color: rgb(0, 0, 0);  font-family:arial, sans-serif;"><span class="Apple-style-span"  style="font-size:small;"> main reasons:<br /><i>1) The optimizer statistics the EXPLAIN PLAN ends up using are different from the statistics the other session ended up using<br />2) Explain plan does not use bind variable peeking thus will not optimize for current bind variable values<br />3) Explain plan treats all bind variables as VARCHAR2, thus you ma have implicit datatype conversion happening during the plan execution, (meaning to_char,to_number functions are added around variables/columns) and this for example may make optimizer to ignore some indexes if you get unlucky.</i></span></span></span></span></div><div><span class="Apple-style-span"  style="font-family:arial, sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; "><span class="Apple-style-span"  style="font-size:small;">with the caveat:</span></span></span></div><div><span class="Apple-style-span"  style="font-family:arial, sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse; "><span class="Apple-style-span"  style="font-size:small;"><i>Little correction to point number 3 - of course explain plan doesn't really execute the plan so the implicit datatype conversion you see is in the explained plan only, but if you actually execute the statement (with correct bind datatypes) then there's no implicit datatype conversion. And that's where the difference comes from...</i></span></span></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-2106803712282963644?l=db-optimizer.blogspot.com' alt='' /></div>]]></content:encoded>
      </item>
  <item>
    <title>Future of Cloud Computing and Relational Databases</title>
    <link>http://db-optimizer.blogspot.com/2009/11/future-of-cloud-computing-and.html</link>
    <pubDate>Mon, 16 Nov 2009 10:52:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[I was talking to someone from Amazon who indicated that Amazon is moving more and more processing away from Oracle into the middle tier and object oriented databases with the idea being to reduce usage of Oracle and to improve processing time. The time it takes me as a consumer to put an order in can be reduced if Amazon just at takes all my information and says "purchase complete" and then process all the data and mails me later if anything goes wrong.<div>Taking this idea farther, there are a lot of cases where processing doesn't have to immediately be transactional. The transactional can be delayed in a lot of cases.</div><div>One accutely relevant recent example has been  the recent <a href="http://www.rollingstone.com/politics/story/30481512/wall_streets_naked_swindle/print">naked shares</a> scandal which helped sink the US banks much faster and deeper. These naked shares are when brokerage houses sell shares of a company that they don't really have. Normally a brokerage house would be transactional about buying and selling, but in this case the brokerage house can sell without actually owning the stock and buy the stock later. If  the risk of this kind of inconsistency is smaller than the overhead a slower more expensive system insures consistency then why not go with the inconsistency?</div><div>Of course in the case of the brokerage scandal the inconsistency might have been intentional and if so and if regulated would bring back a transactional system. There will always be the requirement for transactional systems guaranteeing the usage of relational databases.</div><div>Interesting article on the subject</div><div><a href="http://www.rollingstone.com/politics/story/30481512/wall_streets_naked_swindle/print">http://www.sdtimes.com/content/article.aspx?ArticleID=33912</a></div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-205036543603052575?l=db-optimizer.blogspot.com' alt='' /></div>]]></content:encoded>
      </item>
  <item>
    <title>Clean Installs (Embarcadero's All Access)</title>
    <link>http://db-optimizer.blogspot.com/2009/11/clean-installs-embarcaderos-all-access.html</link>
    <pubDate>Sat, 14 Nov 2009 16:33:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<div>Ever have problems de-installing software on windows? Well Embarcadero has a new technology where there is no install for it's windows install. It's called "Instant On" and is part of Embarcadero's All Access suite of products. Just execute the program and it runs immediately without any install (the way it should work, like on UNIX). </div><div>This new "Instant On " functionality is the techology on 30 USB drives I gave away at my NoCOUG talk. The USB contained DB Optimizer, the product I work with the new Visual SQL Tuning (VST) as well as Embarcadero's other database products.  The USB is good for 30 days and has another 30 day renable trial license make 2 free months of trial time.</div><div>People who didn't get the USBs were asking me if I could sent some. I don't have any more but the same files are available online at</div><div><a href="https://downloads.embarcadero.com/free/aa_client">https://downloads.embarcadero.com/free/aa_client</a></div><div>Just download the "All Access" client and run it. All Access will display all of Embarcadero's tools both database and codegear and allow you to download and trial any of these products with this new Instant On functionality. Super cool.</div><div><img src="http://4.bp.blogspot.com/_fA5yrPv5jII/Sv9N8hI8rrI/AAAAAAAAQEc/dJ6jN9zrnio/s400/all_access.PNG" style="cursor:pointer; cursor:hand;width: 400px; height: 291px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5404123779951275698" /></div><div>above is a screen shot of the All Access client. Just click on any tool to automatically download the Instant On version of the product. DB Optimizer for example is in the bottom right, second from the bottom</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-2940401671449464543?l=db-optimizer.blogspot.com'/></div>]]></content:encoded>
      </item>
  <item>
    <title>Oracle Users Group - NoCOUG Fri 13th</title>
    <link>http://db-optimizer.blogspot.com/2009/11/oracle-users-group-nocoug-fri-13th.html</link>
    <pubDate>Sat, 14 Nov 2009 14:58:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<div><br /></div><div>Had an enjoyable day at the NoCOUG held at Oracle Corp, my old stomping grounds.</div><div>It was fun to see and catch up with Greg Rahn, John Beresniewicz, Graham Wood, Juan Loaiza, Maria Colgan and Tanel Poder. Tanel's presentation that I saw was the highlight for me. With in the first couple of minutes he showed some super timesaving devices for SQLPLUS in windows that I'd wanted for ages. For example, there seems to be no way to change the title of sqlplusw.exe but but by using sqlplus.exe in a cmd window you can with the simple dos "title" command. My first reaction was "I can't use a cmd window because cut and paste is wanky" then Tanel pointed out that classic cut and paste can be enabled via the cmd widow properties. He also showed the sqlplus command "set markup html on" which outputs sql query results in HTML - so what? well by spooling to a file with ".html" extention and using the dos command "start output.html" via sqlplus' host, we then get a browser with the data in an HTML table which is really nice when the data is wide. Same thing works with output to ".xls"  - we get HTML data open directly in Excel. Very cool and convenient.</div><div>Tanel went over his famous snapper and finished with is latchprofX script for analyzing latch issues. The latchprofX script is a beautiful script and I'vce blogged at it before. You read more ot it at <br /><a href=http://blog.tanelpoder.com/2009/08/27/latch-cache-buffers-chains-latch-contention-a-better-way-for-finding-the-hot-block/>Tanel Poder's Blog</a></div><div><br /></div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-1105986792096046165?l=db-optimizer.blogspot.com'/></div>]]></content:encoded>
      </item>
  <item>
    <title>The Coming RAD Studio Update</title>
    <link>http://blogs.embarcadero.com/nickhodges/2009/11/13/39332/</link>
    <comments>http://blogs.embarcadero.com/nickhodges/2009/11/13/39332/#comments</comments>
    <pubDate>Fri, 13 Nov 2009 16:52:46 +0000</pubDate>
    <dc:creator>Nick Hodges</dc:creator>
    
		<category><![CDATA[CodeGear News]]></category>

		<category><![CDATA[Community]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[RAD Studio]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/nickhodges/2009/11/13/39332</guid>
    <description><![CDATA[
This week we were in the early stages of rolling out what was to be “RAD Studio Update 2” with a large number of bug fixes.&#160; We put the update out on the web and the registered users page, and posted an article on the Embarcadero Developer Network. We were excited, because there are a [...]]]></description>
      <content:encoded><![CDATA[</p>
<p>This week we were in the early stages of rolling out what was to be “RAD Studio Update 2” with a large number of bug fixes.&#160; We put the update out on the web and the registered users page, and posted an article on the Embarcadero Developer Network. We were excited, because there are a lot of bug fixes in it, making an already solid product even more solid.</p>
<p>However, once a few people started installing it, they noticed that they were being asked to register every time RAD Studio was run.&#160; The product is properly registered, but the dialog box still pops up every time you run RAD Studio.</p>
<p>So, first, if this is happening to you, we’re sorry.&#160; You can simply click cancel whenever you see that dialog and be on your merry way with the benefit of the fixes for Update 2.&#160; Your product should be properly registered, regardless of what the dialog may tell you.&#160; </p>
<p>Second, we have recognized the issue and pulled the Update from distribution.&#160; We want you to have the best experience, obviously, so the continued distribution of the Update clearly isn’t in anyone’s interest.&#160; We don’t want folks to run into the problem – again, obviously.&#160; </p>
<p>Third, we are working on a fix that will cover everyone.&#160; If you’ve installed Update 2 and are running in to the issue above, then we’ll have a fix for you.&#160; If you haven’t installed Update 2 yet, we apologize for the delay, and we’ll have an update for you that doesn’t have this issue.&#160; I can’t say when we’ll have it, but obviously we want it to be as soon as possible.&#160; We want you to have this Update in your hands as much as you do.</p>
<p>Finally, we’re sorry for the hassle, and we’ll get this fixed as soon as possible.&#160; </p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/nickhodges/?p=39332&amp;akst_action=share-this" onclick="akst_share('39332', 'http%3A%2F%2Fblogs.embarcadero.com%2Fnickhodges%2F2009%2F11%2F13%2F39332%2F', 'The+Coming+RAD+Studio+Update'); return false;" title="Post to del.icio.us, etc." id="akst_link_39332" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=The%20Coming%20RAD%20Studio%20Update&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fnickhodges%2F2009%2F11%2F13%2F39332%2F" id="akst_email_39332" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
  <gravatar>https://secure.gravatar.com/avatar/ad243151d19525c6e83a18d75c2eb3b6?r=g&amp;d=https%3a%2f%2fstatic.codegear.com%2fimages%2fno_avatar.jpg&amp;s=50</gravatar>
  </item>
  <item>
    <title>Oracle Books online</title>
    <link>http://db-optimizer.blogspot.com/2009/11/oracle-books-online.html</link>
    <pubDate>Thu, 12 Nov 2009 18:54:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<div><br /></div><div><a href=http://books.google.com/books?id=b3DIkYO2gBQC> Troubleshooting Oracle Performance</a></div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-4130810910243891397?l=db-optimizer.blogspot.com'/></div>]]></content:encoded>
      </item>
  <item>
    <title>Oracle 11g Baselines</title>
    <link>http://db-optimizer.blogspot.com/2009/11/oracle-11g-baselines.html</link>
    <pubDate>Thu, 12 Nov 2009 18:51:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[this site<div>http://kerryosborne.oracle-guy.com/2009/04/oracle-11g-sql-plan-management-sql-plan-baselines</div><div>is the best source of information I've found on Oracle baselines an exciting new feature in Oracle 11g that seems to provide a solid solution for using hints on queries but still being able to track possible better execution plans with the evolve option.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-5048629526239198717?l=db-optimizer.blogspot.com'/></div>]]></content:encoded>
      </item>
  <item>
    <title>Real Time SQL Monitoring</title>
    <link>http://db-optimizer.blogspot.com/2009/11/real-time-sql-monitoring.html</link>
    <pubDate>Thu, 12 Nov 2009 16:49:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fA5yrPv5jII/SvytzqIGUtI/AAAAAAAAQEU/glJ1O3dB4zc/s1600-h/real_time_sql_monitoring.PNG"><img style="cursor:pointer; cursor:hand;width: 600px; height: 120px;" src="http://3.bp.blogspot.com/_fA5yrPv5jII/SvytzqIGUtI/AAAAAAAAQEU/glJ1O3dB4zc/s400/real_time_sql_monitoring.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5403384755930944210" /></a><br /><br /><div><br />here is a feature that I'm excited about: </div><div><br /></div><div>Real Time SQL Monitoring</div><div><br /></div><div><a href="http://askdba.org/weblog/2009/09/11gr2-monitoring-real-time-sql-plan-execution-from-oracle-enterprise-manager/">http://askdba.org/weblog/2009/09/11gr2-monitoring-real-time-sql-plan-execution-from-oracle-enterprise-manager/</a></div><div><br /></div><div>Active Session History has added fields that can track the execution id of a statement as well as the row source (ie line in the explain plan) that the query is executing. For long running queries this can be a way to see where the query is at as well as seeing which row sources are more expensive and for short running queries one can build up a statistical picture of what row sources are expensive.</div><div><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-7990657411827236415?l=db-optimizer.blogspot.com'/></div>]]></content:encoded>
      </item>
  <item>
    <title>ITDevCon 2009 - Day 2</title>
    <link>http://blogs.embarcadero.com/pawelglowacki/2009/11/12/38831/</link>
    <comments>http://blogs.embarcadero.com/pawelglowacki/2009/11/12/38831/#comments</comments>
    <pubDate>Thu, 12 Nov 2009 14:33:10 +0000</pubDate>
    <dc:creator>Pawel Glowacki</dc:creator>
    
		<category><![CDATA[Delphi Prism]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[iPhone]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=38831</guid>
    <description><![CDATA[It is the second day of ITDevCon. The conference is really better than I was expecting. bitTime crew is taking perfect care of all attendees. Again - it is impossible to be on three parallel sessions at the same time. Especially if you are delivering sessions yourself:-)
The first session for me was my "Delphi Natural [...]]]></description>
      <content:encoded><![CDATA[<p>It is the second day of <a href="http://www.itdevcon.it/en/home">ITDevCon</a>. The conference is really better than I was expecting. <a href="http://www.bittime.it/site/home.php">bitTime</a> crew is taking perfect care of all attendees. Again - it is impossible to be <a href="http://www.itdevcon.it/it/agenda">on three parallel sessions</a> at the same time. Especially if you are delivering sessions yourself:-)</p>
<p>The first session for me was my "Delphi Natural Input" session. I have covered Delphi 2010 support for touch, multitouch and gesturing. The more I go into this technology the more I like it. In order to demo multitouch you really need to have multitouch enabled hardware. It is still quite expensive to have proper laptop with touch support, but the alternative is to use either <a href="http://chrisbensen.blogspot.com/2009/10/dell-sx2210t-multitouch-monitors.html">external touch-enabled screen</a> or just an external tablet device which is much more affordable. <a href="http://www.marcocantu.com/">Marco Cantu</a> showed me in Internet yesterday <a href="http://www.tablet4u.co.uk/bamboo.html">this Wacom bamboo tablet</a> that is really something like ten times less expensive. During the preparation to my Delphi touch talk I have discovered that the file format for files with gestures definitions created programatically using "TGestureManager.SaveToFile" is incompatible with files created from inside the IDE with Gesture Manager custom gesture editor at design time, but it is still great fun to create Delphi 2010 gestures programmatically:-)</p>
<p>The second session I have attended was by <a href="http://www.delphiexperts.net/">Daniel Magin</a>. Daniel covered ways to remove BDE from your existing Delphi applications. Daniel created in a new unit with his own empty classes derived from TDatabase, TTable, TQuery and TStoredProc and used <a href="http://www.gexperts.org/">GExperts</a> to replace throughout the application all occurances of TDatabase, TTable, TQuery and TStoredProc with his own equivalents. In the second step he changed his classes to be derived from RemObjects Data Abstract components. In my opinion this is the way to go. If you consider how <a href="http://blogs.embarcadero.com/pawelglowacki/2007/07/27/37764">DBExpress internals has been changed in Delphi 2007 without breaking the VCL component layer</a>, that&#8217;s exactly how BDE could be refactored out from the VCL in the future.</p>
<p>The next session for me was my "Delphi Enterprise Architectures and DataSnap 2010". In this nicely attended slot, I have compared DataSnap 2010 <a href="http://wings-of-wind.com/2009/08/19/rad-studio-2010-review-11-datasnap/">features</a> with other enterprise architectures like <a href="http://www.omg.org/gettingstarted/corbafaq.htm">CORBA</a>, <a href="http://java.sun.com/javaee/5/docs/tutorial/doc/bnaay.html">JEE</a>, <a href="http://msdn.microsoft.com/en-us/library/ms733128.aspx%3Cbr%20%3E%3C/a%3E">WCF</a> and <a href="http://msdn.microsoft.com/en-us/library/dd430435(VS.85).aspx">WWSAPI</a> and I think I have managed to prove that DataSnap 2010 has all the features expected from mature, robust enterprise architecture.</p>
<p><a href="http://blogs.embarcadero.com/joseleon/">Jose Leon</a> - the architect of <a href="http://edn.embarcadero.com/article/34059">Delphi for PHP</a> - presented a very interesting session comparing Delphi for Win32 with Delphi for PHP. I really like Jose&#8217;s explanation of VCL for PHP library supports concepts from Delphi VCL like component streaming. Very interesting.</p>
<p>Now <a href="http://www.mitov.com/">Boian Mitov</a> is explaining good practices for creating Delphi 2010 multithreaded applications. Boian is very talented Delphi programmer and author of component libraries for video, audio, signal processing, and computer vision. All his libraries are fully multithreaded and optimized using Intel MMX technologies. The libraries are based on the advanced OpenWire technology, and allow writing complex applications with zero or near zero lines of code.</p>
<p>The last session was very difficult to choose. On one hand there is Marco&#8217;s "Introduction to jQuery" and on another there "iPhone Development.pas" session by Daniel Magin that is planning to cover developing for iPhone with XCode (Objective C) incl. Interface Builder, developing with Mono Touch and C#, developing with Mono Touch and Pascal (Beta) and web apps with Apple DashCode and Delphi IntraWeb. I have chosen for iPhone development session:-)</p>
<p>Daniel is running Mac OS X and demonstrated building simple iPhone app in XCode and Interface Builder. Objective C is not the most friendly programming language, especially for people with Delphi background. It is much easier to develop for iPhone in <a href="http://monodevelop.com/">MonoDevelop</a> with <a href="http://monotouch.net/">MonoTouch </a>plugin in any of the .NET languages. The application is using Google Maps to locate Fabrizio:-) The room is packed with people watching Dani performing his iPhone magic with iPhone app talking to Delphi 2010 Web Services SOAP Server application.</p>
<p>We want Delphi for iPhone!</p>
<p><a href="/files/2009/11/whereisf_2149.png"></a></p>
<div id="attachment_38844" class="wp-caption alignnone" style="width: 310px"><a href="/files/2009/11/whereisf_2155.png"><img src="/files/2009/11/whereisf_2155-300x265.png" alt="Where is Fabrizio?" width="300" height="265" /></a><p class="wp-caption-text">Where is Fabrizio?</p></div>
<div id="attachment_38845" class="wp-caption alignnone" style="width: 310px"><a href="/files/2009/11/fabrizioishere_2158.png"><img src="/files/2009/11/fabrizioishere_2158-300x299.png" alt="Fabrizio is here!" width="300" height="299" /></a><p class="wp-caption-text">Fabrizio is here!</p></div>
<div id="attachment_38846" class="wp-caption alignnone" style="width: 305px"><a href="/files/2009/11/dani_2161.png"><img src="/files/2009/11/dani_2161-295x300.png" alt="... so is Dani" width="295" height="300" /></a><p class="wp-caption-text">... so is Dani</p></div>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=38831&amp;akst_action=share-this" onclick="akst_share('38831', 'http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2009%2F11%2F12%2F38831%2F', 'ITDevCon+2009+-+Day+2'); return false;" title="Post to del.icio.us, etc." id="akst_link_38831" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=ITDevCon%202009%20-%20Day%202&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2009%2F11%2F12%2F38831%2F" id="akst_email_38831" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>ITDevCon 2009 - Day 1</title>
    <link>http://blogs.embarcadero.com/pawelglowacki/2009/11/11/38811/</link>
    <comments>http://blogs.embarcadero.com/pawelglowacki/2009/11/11/38811/#comments</comments>
    <pubDate>Wed, 11 Nov 2009 14:41:22 +0000</pubDate>
    <dc:creator>Pawel Glowacki</dc:creator>
    
		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[events]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=38811</guid>
    <description><![CDATA[I&#8217;m here in Verona - Italian city best known for Romeo and Juliet - on the biggest live Delphi conference in Europe this year - ITDevCon. The conference is organized by bitTime Software- Embarcadero representative in Italy - and there are plenty of Delphi experts presenting on three parallel tracks.
The conference has started from the [...]]]></description>
      <content:encoded><![CDATA[<p>I&#8217;m here in Verona - Italian city best known for <a href="http://en.wikipedia.org/wiki/Romeo_and_Juliet">Romeo and Juliet</a> - on the biggest live <a href="http://edn.embarcadero.com/delphi">Delphi</a> conference in Europe this year - <a href="http://www.itdevcon.it/en/home">ITDevCon</a>. The conference is organized by <a href="http://www.bittime.it/site/home.php">bitTime Software</a>- <a href="http://www.embarcadero.com/">Embarcadero</a> representative in Italy - and there are plenty of <a href="http://www.itdevcon.it/en/speakers">Delphi experts</a> presenting on three parallel tracks.</p>
<p>The conference has started from the keynote session where speakers could introduce themselves and we also had <a href="http://blogs.embarcadero.com/davidi/">David I</a> greeting attendees remotely via skype video session. At the end of the keynote I had an opportunity to demo <a href="http://www.embarcadero.com/products/all-access">Embarcadero All-Access</a>.</p>
<p>Some of the sessions are in Italian and some in English. My "What&#8217;s New in Delphi 2010 IDE and Compiler" session was obviously in English. It was the first time I was demoing Delphi 2010 on Windows 7. Even if you are a presenter, you always can learn something new from attendees. When I have started demoing debugger visualizers, to my surprise there was nothing in debugger windows. No local variables, nothing. Luckily <a href="http://www.mitov.com/">Boian Mitov</a> suggested to turn off Delphi compiler optimization and rebuild the project. That has made the trick. In fact it would make great sense to turn off compiler optimization in the default "Debug" build configuration. Boian has also implemented Delphi 2010 debugger <a href="http://www.mitov.com/html/free_downloads.html">visualizer for bitmaps</a>. Very interesting.</p>
<p>The next session was by <a href="http://www.danieleteti.it/">Daniele Teti</a> on Delphi 2010 support for <a href="http://json.org/">JSON</a> serialization and deserialization. It was not completely new to me, as Daniele has already published very interesting blog post about <a href="http://www.danieleteti.it/?p=146">custom marshaling and unmarshaling in Delphi 2010</a>, but there is nothing like watching the session live. Even in Italian:-) You can find support for JSON in the new "DBXJSON.pas" unit and support for marshalling/unmarshalling in "DBXJSONReflect.pas" unit. The support for serialization and deserialization is very elegant and pluggable. You just need to implement your own custom converters and reverters. When I was watching Daniele, I have realized how useful are generics and anonymous methods introduced in Delphi 2009. In fact the Delphi 2010 VCL uses them quite heavily in different places. Another thing is why in "DBXJSONReflect.pas" in "TTypeMarshaller&lt;TSerial: class&gt;" generic class method params are called "clazz" and not "class"? Interesting&#8230;</p>
<p>After lunch I have decided to see <a href="http://dmagin.wordpress.com/">Daniel Magin</a> presenting "Delphi and Subversion". Daniel demonstrated setting up <a href="http://subversion.tigris.org/">Subversion</a> and practical information about Subversion itself and useful tools to work with Subversion, which is probably the most popular version control system in use.</p>
<p>I could not miss the opportunity to see "Advanced Delphi for PHP" session by its architect - <a href="http://blogs.embarcadero.com/joseleon/">Jose Leon</a>.<br />
Jose made his life a little bit easier by playing <a href="http://www.delphi-php.net/category/tutorials/">prerecorded demo episodes</a> and explaining live what was happening on the screen. <a href="http://www.embarcadero.com/products/delphi-for-php">Delphi for PHP</a> is a very interesting tool for building pure PHP web applications, but using the Delphi concepts in the PHP world. Delphi for PHP is 100% visual IDE, with visual class library modeled after Delphi VCL library. There is nothing that compares to Delphi for PHP in the PHP world. Instead of working in text editor with raw PHP source code and libraries downloaded from Internet, you can work on the higher level of abstraction, because VCL for PHP components encapsulate and abstract away underlying low-level details. You can easily wrap existing PHP libraries, like Zend Framework or ExtJS, with visual components which you can work with visually at design time, pretty much like you can in a normal Delphi 2010 application. One of the very powerful aspects of Delphi for PHP is support for templates to integrate components with fancy CSS designs using popular PHP Smarty Templates engine. You can also easlily create web service servers and consume web services with NuSOAP PHP library available via VCL for PHP components. Another cool features are support for master pages, where you can inherit pages from a master page, and internationalization where you can change page language by changing just one property on a VCL for PHP form. Very cool&#8230;</p>
<p>The next session is 99% is Italian by Luca Giacalone and Fabrizio Bitti and is called "Delphi e l&#8217;interfacciamento con l&#8217;hardware&#8230; the easy way" and is all about using Delphi applications to interface with external hardware. The starting point are printed circuits that you can connect to your machine either via serial port or Ethernet. Check out <a href="http://www.progetti-hw-sw.it/scheda_rele_usb.htm">this page</a> to get an idea what external hardware we are talking about. External hardware can be controlled from your application using TIdHttp component. The second example was to use <a href="http://www.tmssoftware.com/site/async32.asp">TVaComm</a> component from TMSSoftware to switch on and off a lamp, blinking LEDs and then working with video camera to capture images into your Delphi app. The most spectacular part of the demo was to use Delphi app to control via radio a race car model. That was followed by replacing keyboard with Nintendo Wii remote ("wiimote") control with <a href="http://carl.kenner.googlepages.com/glovepie">GlovePIE</a> to steer the car from Delphi app. How cool is that?</p>
<div id="attachment_38825" class="wp-caption alignnone" style="width: 310px"><a href="/files/2009/11/dsc04355_2140.JPG"><img src="/files/2009/11/dsc04355_2140-300x225.jpg" alt="Delphi app to control race car model via radio" width="300" height="225" /></a><p class="wp-caption-text">Delphi app to control race car model via radio</p></div>
<div id="attachment_38826" class="wp-caption alignnone" style="width: 310px"><a href="/files/2009/11/delphiappandracecar_2143.png"><img src="/files/2009/11/delphiappandracecar_2143-300x189.png" alt="Race car model on the conference room floor" width="300" height="189" /></a><p class="wp-caption-text">Race car model on the conference room floor</p></div>
<div id="attachment_38827" class="wp-caption alignnone" style="width: 274px"><a href="/files/2009/11/delphiandhardware_2146.png"><img src="/files/2009/11/delphiandhardware_2146-264x300.png" alt="Luca Giacalone uses Wiimote to steer the car with Delphi application" width="264" height="300" /></a><p class="wp-caption-text">Luca Giacalone uses Wiimote to steer the car with Delphi application</p></div>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=38811&amp;akst_action=share-this" onclick="akst_share('38811', 'http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2009%2F11%2F11%2F38811%2F', 'ITDevCon+2009+-+Day+1'); return false;" title="Post to del.icio.us, etc." id="akst_link_38811" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=ITDevCon%202009%20-%20Day%201&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2009%2F11%2F11%2F38811%2F" id="akst_email_38811" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>C++Builder 2010 Boost support (Update)</title>
    <link>http://blogs.embarcadero.com/ddean/2009/11/11/34858/</link>
    <comments>http://blogs.embarcadero.com/ddean/2009/11/11/34858/#comments</comments>
    <pubDate>Wed, 11 Nov 2009 21:26:32 +0000</pubDate>
    <dc:creator>David Dean</dc:creator>
    
		<category><![CDATA[Uncategorized]]></category>

    <guid isPermaLink="false">http://blogs.embarcadero.com/ddean/?p=34858</guid>
    <description><![CDATA[Today’s update includes welcome news for some.
circular_buffer and pool now pass 100%
Serialization has been added back to the list of supported libraries.
There have been big improvements in thread and date_time
The full rundown follows:
The following compile and pass boost’s regression suite 100% and are included in C++Builder 2010’s Updates:
algorithm/minmax
algorithm/string
any
array
circular_buffer
crc
disjoint_sets
format
functional
logic
pool
property_map
signals
static_assert
system
tokenizer
tuple
utility/swap

The following are included in C++Builder but do [...]]]></description>
      <content:encoded><![CDATA[<p>Today’s update includes welcome news for some.<br />
circular_buffer and pool now pass 100%<br />
Serialization has been added back to the list of supported libraries.<br />
There have been big improvements in thread and date_time<br />
The full rundown follows:</p>
<p><strong>The following compile and pass boost’s regression suite 100% and are included in C++Builder 2010’s Updates:</strong></p>
<blockquote><p>algorithm/minmax<br />
algorithm/string<br />
any<br />
array<br />
circular_buffer<br />
crc<br />
disjoint_sets<br />
format<br />
functional<br />
logic<br />
pool<br />
property_map<br />
signals<br />
static_assert<br />
system<br />
tokenizer<br />
tuple<br />
utility/swap
</p></blockquote>
<p><strong>The following are included in C++Builder but do not pass 100%:</strong></p>
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<td>Library</td>
<td>compile</td>
<td>run</a></td>
</tr>
<tr>
<td>unordered</td>
<td>100.00</td>
<td>96.67</td>
</tr>
<tr>
<td>config</td>
<td>100.00</td>
<td>88.89</td>
</tr>
<tr>
<td>integer</td>
<td>100.00</td>
<td>83.33</td>
</tr>
<tr>
<td>optional</td>
<td>100.00</td>
<td>80.00</td>
</tr>
<tr>
<td>conversion</td>
<td>100.00</td>
<td>71.43</td>
</tr>
<tr>
<td>dynamic_bitset</td>
<td>100.00</td>
<td>50.00</td>
</tr>
<tr>
<td>filesystem [1]</td>
<td>100.00</td>
<td>75.00</td>
</tr>
<tr>
<td>io</td>
<td>100.00</td>
<td>50.00</td>
</tr>
<tr>
<td>timer</td>
<td>100.00</td>
<td>none</td>
</tr>
<tr>
<td>regex</td>
<td>97.78</td>
<td>97.14</td>
</tr>
<tr>
<td>serialization</td>
<td>96.17</td>
<td>97.67</td>
</tr>
<tr>
<td>type_traits [2]</td>
<td>96.00</td>
<td>94.44</td>
</tr>
<tr>
<td>iostreams</td>
<td>94.74</td>
<td>97.14</td>
</tr>
<tr>
<td>bind</td>
<td>93.75</td>
<td>100.00</td>
</tr>
<tr>
<td>smart_ptr</td>
<td>93.48</td>
<td>100.00</td>
</tr>
<tr>
<td>functional/hash</td>
<td>93.10</td>
<td>100.00</td>
</tr>
<tr>
<td>test</td>
<td>92.86</td>
<td>100.00</td>
</tr>
<tr>
<td>math</td>
<td>92.86</td>
<td>24.60</td>
</tr>
<tr>
<td>tr1</td>
<td>92.24</td>
<td>80.33</td>
</tr>
<tr>
<td>thread</td>
<td>91.30</td>
<td>55.26</td>
</tr>
<tr>
<td>mpl</td>
<td>91.11</td>
<td>100.00</td>
</tr>
<tr>
<td>range</td>
<td>90.91</td>
<td>100.00</td>
</tr>
<tr>
<td>function</td>
<td>90.91</td>
<td>87.50</td>
</tr>
<tr>
<td>function_types</td>
<td>90.48</td>
<td>none</td>
</tr>
<tr>
<td>utility</td>
<td>88.00</td>
<td>100.00</td>
</tr>
<tr>
<td>utility/enable_if</td>
<td>87.50</td>
<td>100.00</td>
</tr>
<tr>
<td>iterator</td>
<td>86.96</td>
<td>100.00</td>
</tr>
<tr>
<td>asio</td>
<td>86.07</td>
<td>100.00</td>
</tr>
<tr>
<td>date_time</td>
<td>85.53</td>
<td>91.80</td>
</tr>
<tr>
<td>variant</td>
<td>83.33</td>
<td>100.00</td>
</tr>
<tr>
<td>numeric/interval</td>
<td>80.00</td>
<td>100.00</td>
</tr>
<tr>
<td>exception</td>
<td>75.76</td>
<td>92.86</td>
</tr>
<tr>
<td>parameter</td>
<td>71.43</td>
<td>100.00</td>
</tr>
<tr>
<td>concept_check</td>
<td>69.23</td>
<td>100.00</td>
</tr>
<tr>
<td>assign</td>
<td>69.23</td>
<td>100.00</td>
</tr>
<tr>
<td>numeric/conversion</td>
<td>50.00</td>
<td>100.00</td>
</tr>
<tr>
<td>typeof</td>
<td>48.72</td>
<td>100.00</td>
</tr>
<tr>
<td>spirit</td>
<td>44.44</td>
<td>100.00</td>
</tr>
<tr>
<td>gil</td>
<td>40.00</td>
<td>100.00</td>
</tr>
</table>
<p>[1] runtime failures in filesystem are due to problems with wide character support differences.<br />
[2] You should probably be using our <a href="http://blogs.embarcadero.com/ddean/2009/01/19/34812">intrinsic type-traits</a> instead </p>
<p><strong>The following are *not* included in C++Builder 2010</strong></p>
<blockquote><p>accumulators<br />
bimap<br />
flyweight<br />
foreach<br />
fusion<br />
graph<br />
interprocess<br />
intrusive<br />
lambda<br />
multi_array<br />
multi_index<br />
numeric/ublas<br />
program_options<br />
proto<br />
ptr_container<br />
python<br />
random [3]<br />
rational<br />
scope_exit<br />
signals2<br />
statechart<br />
units<br />
wave<br />
xpressive
</p></blockquote>
<p>[3] We include the dinkumware random libraries, which should provide you with the same routines.</p>
<p>Stay tuned to code central for an updated version of the full sources which can be used to build unsupported libraries.</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/ddean/?p=34858&amp;akst_action=share-this" onclick="akst_share('34858', 'http%3A%2F%2Fblogs.embarcadero.com%2Fddean%2F2009%2F11%2F11%2F34858%2F', 'C%2B%2BBuilder+2010+Boost+support+%28Update%29'); return false;" title="Post to del.icio.us, etc." id="akst_link_34858" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=C%2B%2BBuilder%202010%20Boost%20support%20%28Update%29&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fddean%2F2009%2F11%2F11%2F34858%2F" id="akst_email_34858" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
      <wfw:commentRss></wfw:commentRss>
    </item>
  <item>
    <title>Oracle EM Desktop Widgets</title>
    <link>http://db-optimizer.blogspot.com/2009/11/oracle-em-desktop-widgets.html</link>
    <pubDate>Tue, 10 Nov 2009 15:11:00 +0000</pubDate>
    <dc:creator>Kyle Hailey</dc:creator>
    <content:encoded><![CDATA[<div>Oracle add desktop widgets to OEM. Wonder if this is targeted for mobile devices or not?</div><div><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blogs.oracle.com/emwidgets/slm.png"><img style="cursor:pointer; cursor:hand;width: 300px; height: 326px;" src="http://blogs.oracle.com/emwidgets/slm.png" border="0" alt="" /></a><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blogs.oracle.com/emwidgets/slm.png"></a><div><br /></div><div><a href="http://ilmarkerm.blogspot.com/2009/11/oracle-enterprise-manager-desktop.html">http://ilmarkerm.blogspot.com/2009/11/oracle-enterprise-manager-desktop.html</a></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/755542794415995865-805270053358147422?l=db-optimizer.blogspot.com'/></div>]]></content:encoded>
      </item>
</channel>
</rss>
