<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-20567072</atom:id><lastBuildDate>Tue, 24 Jan 2012 09:00:48 +0000</lastBuildDate><category>LOUD</category><category>APEX 4.0</category><category>Collaborate</category><category>Expert APEX book</category><category>jQuery</category><category>MySQL</category><category>XML-DB</category><category>Designer</category><category>Dublin</category><category>VirtualBox</category><category>APEX 4.0; OGH</category><category>APEX</category><category>Oracle</category><category>ORCAN</category><category>DOAG</category><category>Google</category><category>ODTUG</category><category>KScope; APEX</category><category>APEX 4.0; OBUG</category><category>KScope</category><category>APEXposed</category><category>PlugIn</category><category>OBUG</category><category>AnyCharts</category><category>SQL Developer</category><category>EBS</category><category>UKOUG</category><category>Oracle Scene</category><category>Forms</category><category>OOW</category><category>XFILES</category><category>Blog</category><category>HTML5</category><title>Roels Blog</title><description /><link>http://roelhartman.blogspot.com/</link><managingEditor>noreply@blogger.com (Roel)</managingEditor><generator>Blogger</generator><openSearch:totalResults>246</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RoelsBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="roelsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-791469337467008898</guid><pubDate>Mon, 23 Jan 2012 12:39:00 +0000</pubDate><atom:updated>2012-01-23T13:41:29.986+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">APEX</category><title>Create a calendar item returning week numbers</title><description>&lt;a href="http://1.bp.blogspot.com/-8WxOdsUPpT0/Tx1UUFGGcWI/AAAAAAAAAyM/WSCZtOPHlgA/s1600/calendar.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://1.bp.blogspot.com/-8WxOdsUPpT0/Tx1UUFGGcWI/AAAAAAAAAyM/WSCZtOPHlgA/s200/calendar.jpg" width="200" /&gt;&lt;/a&gt;When you use the built-in jQuery UI datepicker in your APEX page, you choose from a number of different format masks...but something with "week" is not one of them. And guess what I needed for recent project...&lt;br /&gt;
But, the good news is, you can (rather easy) use the jQuery framework to tweak the result that's returned from the datepicker.&lt;br /&gt;
Just create a Dynamic Action that fires on load of the page, and add these line of Javascript:&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//Show the week number as the first column&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$( ".datepicker" ).datepicker( "option", "showWeek", true );&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//Set Monday as the first day of the week&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$( ".datepicker" ).datepicker( "option", "firstDay", 1 );&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//Return yyyy-ww instead of the actual date&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$(".datepicker").datepicker("option", "onSelect",&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(value, date)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { var week=$.datepicker.iso8601Week (&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Date(date.selectedYear,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date.selectedMonth,&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date.selectedDay));&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(this).val(date.selectedYear+'-'+(week&amp;lt;10?'0':'')+week);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;);&lt;/span&gt;&lt;br /&gt;
That's it. Of course you have to replace the jQuery selector - $(".datepicker") - with the one that matches your selection.&lt;br /&gt;
You can also substitute the function that generates the week number with your own one. And, yes, you could turn this into a plug-in if you like... (maybe I will when I've got the time, but no guarantee).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-791469337467008898?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2012/01/create-calendar-item-returning-week.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-8WxOdsUPpT0/Tx1UUFGGcWI/AAAAAAAAAyM/WSCZtOPHlgA/s72-c/calendar.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-5089828346484270523</guid><pubDate>Tue, 10 Jan 2012 13:28:00 +0000</pubDate><atom:updated>2012-01-10T14:30:21.435+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">HTML5</category><category domain="http://www.blogger.com/atom/ns#">APEX</category><title>Wouldn't you like to talk to your APEX app?</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-eZkYL18p54g/Tww9QpU1aTI/AAAAAAAAAyA/8TsFnMUpkcc/s1600/742microphone.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://3.bp.blogspot.com/-eZkYL18p54g/Tww9QpU1aTI/AAAAAAAAAyA/8TsFnMUpkcc/s200/742microphone.gif" width="80" /&gt;&lt;/a&gt;&lt;/div&gt;
Of course you are familiar with Martin Giffy D'Souza's blog &lt;a href="http://www.talkapex.com/"&gt;talkapex.com&lt;/a&gt;&amp;nbsp;(if you're not, check it out - it's really worthwhile). But wouldn't it be nice to not only talk &lt;b&gt;about &lt;/b&gt;APEX, but also &lt;b&gt;to &lt;/b&gt;APEX?&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
The only thing you need is a recent version of Chrome (11 or up) and a microphone. And then...just by entering "x-webkit-speech" to the HTML Form Element Attributes of your input item, you have speech-enabled your application!&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-KL6FWK3At8s/Tww7JtcoRDI/AAAAAAAAAxo/9vsw7jFK2e0/s1600/speech001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="119" src="http://2.bp.blogspot.com/-KL6FWK3At8s/Tww7JtcoRDI/AAAAAAAAAxo/9vsw7jFK2e0/s320/speech001.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
All "speech enabled" items will get a little mic at the end. When you click on it, you can say what you like. Oh yeah..and it works for number and date fields as well!&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-JZhLiEL6fn8/Tww7YqozQGI/AAAAAAAAAxw/LDpy_ytDQ74/s1600/speech02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="81" src="http://4.bp.blogspot.com/-JZhLiEL6fn8/Tww7YqozQGI/AAAAAAAAAxw/LDpy_ytDQ74/s320/speech02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
One remark : Whatever you enter will go through Google's voice recognition ... so Big Brother is listening in on you!&lt;/div&gt;
&lt;div&gt;
Try it out yourself on :&amp;nbsp;&lt;a href="http://apex.oracle.com/pls/apex/f?p=HTML5:SPEAK"&gt;http://apex.oracle.com/pls/apex/f?p=HTML5:SPEAK&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-5089828346484270523?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2012/01/wouldnt-you-like-to-talk-to-your-apex.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-eZkYL18p54g/Tww9QpU1aTI/AAAAAAAAAyA/8TsFnMUpkcc/s72-c/742microphone.gif" height="72" width="72" /><thr:total>3</thr:total><georss:featurename>7431 Diepenveen, The Netherlands</georss:featurename><georss:point>52.2915271 6.1485912</georss:point><georss:box>52.2526791 6.0696272 52.330375100000005 6.2275552</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-2759516843536575735</guid><pubDate>Wed, 28 Dec 2011 11:11:00 +0000</pubDate><atom:updated>2011-12-30T12:13:12.664+01:00</atom:updated><title>APEX app running native on iPhone - the details</title><description>&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-8snkW1UxyBo/Tvr5t5itfTI/AAAAAAAAAxU/LaPhJxXhlsk/s1600/pg1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://1.bp.blogspot.com/-8snkW1UxyBo/Tvr5t5itfTI/AAAAAAAAAxU/LaPhJxXhlsk/s400/pg1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
A (rather long) time ago, I wrote a blog post showing a demo of &lt;a href="http://roelhartman.blogspot.com/2011/11/apex-application-running-native-on.html" target="_blank"&gt;an APEX application running native on an iPhone&lt;/a&gt;. Now, finally, the moment is there to explain how I did it ;-)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The key part of this demo, is the use of &lt;a href="http://phonegap.com/" target="_blank"&gt;PhoneGap&lt;/a&gt;. PhoneGap "wraps" any HTML5 code, thereby giving you access to the native API's of your device. This solution is also used by the upcoming &lt;a href="http://www.oracle.com/technetwork/developer-tools/adf/overview/adf-mobile-096323.html" target="_blank"&gt;ADF Mobile&lt;/a&gt; solution, but can already be used now for any HTML5 web application..including your APEX application.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Start with downloading the PhoneGap sources from their site and install it in your development environment (I used Apple's Xcode) - see the documentation on the PhoneGap site on the how-to.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Within Xcode, you'll get an index.html, which is the starting point of your application. In this, simplified, example, my index.html only contains the following code:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;title&amp;gt;&lt;span class="s1"&gt;APEX DEMO&lt;/span&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p2"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;meta &lt;/span&gt;&lt;span class="s3"&gt;name&lt;/span&gt;&lt;span class="s2"&gt;=&lt;/span&gt;"viewport"&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="s3"&gt;content&lt;/span&gt;&lt;span class="s2"&gt;=&lt;/span&gt;"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;"&lt;span class="s2"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;&lt;/span&gt;&amp;lt;meta &lt;span class="s3"&gt;charset&lt;/span&gt;=&lt;span class="s4"&gt;"utf-8"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p3"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;body &lt;/span&gt;&lt;span class="s3"&gt;onload&lt;/span&gt;&lt;span class="s2"&gt;=&lt;/span&gt;&lt;span class="s4"&gt;"window.location.href='&lt;a href="http://apex.oracle.com/pls/apex/f?p=ROELSMOBILEAPP';"&gt;&lt;span class="s5"&gt;http://apex.oracle.com/pls/apex/f?p=ROELSMOBILEAPP';&lt;/span&gt;&lt;/a&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="s1"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
So the only thing it does, is a redirect to my APEX application. Nothing more, nothing less.&lt;/div&gt;
&lt;div class="p1"&gt;
In the page template of the APEX application I included the&amp;nbsp;phonegap-1.2.0.js script file (currently 1.3.0 is the latest version).&amp;nbsp;&lt;/div&gt;
&lt;div class="p1"&gt;
Before any features can be used, PhoneGap has to be started. In my example, I added a Dynamic Action on Page 0, that runs on Page Load, with as contents&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;document.addEventListener("deviceready",onDeviceReady,false);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
And from that point on, any PhoneGap feature can be used. In the example in the blogpost mentioned above, I added a button on a form page, that executes the following snippet of Javascript:&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;var contact = navigator.contacts.create();&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;var name = new ContactName();&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;name.givenName = $v('P9_CUST_FIRST_NAME');&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;name.familyName = $v('P9_CUST_LAST_NAME');&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;contact.name = name;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;contact.save(onSaveSuccess,onSaveError);&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;function onSaveSuccess( contact )&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;navigator.notification.alert("Contact saved on your device");&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;function onSaveError(contactError)&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;alert("Error = " + contactError.code);&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class="p1" style="font-family: Times, 'Times New Roman', serif;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="p1"&gt;
And that's it! When pressing the button, the contact - just the first and last name - is added to your contact list on your device. Of course you can add addresses, telephone numbers etc as well. And use other native device functionalities, like the camera or the compass as well. &amp;nbsp;See the &lt;a href="http://docs.phonegap.com/en/1.3.0/index.html" target="_blank"&gt;API documentation&lt;/a&gt; for all the details.&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
The only "problem" will be, that this native iPhone "application" - which is just the index.html file - will never be accepted in the Apple store, just because it hasn't enough content to act on it's own. So you have to build an app with more content, and use your APEX application just to fill in some "gaps". But there are of course more ways to get data from your database to your native application, like web services.&amp;nbsp;&lt;/div&gt;
&lt;div class="p1"&gt;
Please, let me know whenever you get an app in the store with some APEX content!&lt;/div&gt;
&lt;div class="p1"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="p1"&gt;
Happy PhoneGapping!&lt;/div&gt;
&lt;/div&gt;
&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-2759516843536575735?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/12/apex-app-running-native-on-iphone.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-8snkW1UxyBo/Tvr5t5itfTI/AAAAAAAAAxU/LaPhJxXhlsk/s72-c/pg1.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-4731436953941523257</guid><pubDate>Fri, 09 Dec 2011 19:21:00 +0000</pubDate><atom:updated>2011-12-09T20:36:29.661+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">UKOUG</category><title>UKOUG2011 Retrospective</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/--aPwsD5Vgw0/TuJfoRGR_II/AAAAAAAAAw8/kAtCt2IZMYU/s1600/we-were-wrong.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/--aPwsD5Vgw0/TuJfoRGR_II/AAAAAAAAAw8/kAtCt2IZMYU/s320/we-were-wrong.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
Looking back at this weeks UKOUG Conference, a few things strike my mind. At first, there was no snow this time! A lot of wind to make my flight back quite wobbly, but no snow - like last year - that would make travelling very hard (up to almost impossible).&lt;br /&gt;
Second, there were - again - lots of good sessions to choose from. Several time slots had two or even three sessions I would like to attend. And another pro - as strange as it may sound from an APEX geek - there are not that many APEX sessions. That gives me the chance - or the obligation - to look into other corners of the Oracle ecosystem. So I actually did learn something!&lt;br /&gt;
And I saw some "ok" sessions, some good ones and a few excellent ones - like Doug's SPM, Connor's Partitioning and Slavik's SQL Injection. But... there was only one really impressive one: Cary's keynote. In a very emotional and personal way, he took the audience by the hand - telling some touching real life stories about his private life and work. &lt;i&gt;You were right&lt;/i&gt;, Cary, to take this next step. Thanks a lot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-4731436953941523257?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/12/ukoug2011-retrospective.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/--aPwsD5Vgw0/TuJfoRGR_II/AAAAAAAAAw8/kAtCt2IZMYU/s72-c/we-were-wrong.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Birmingham, West Midlands, UK</georss:featurename><georss:point>52.486243 -1.890401</georss:point><georss:box>52.331536 -2.206258 52.640950000000004 -1.574544</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-6690587630580352320</guid><pubDate>Fri, 18 Nov 2011 14:42:00 +0000</pubDate><atom:updated>2011-11-18T16:17:07.391+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DOAG</category><title>I've been to DOAG!</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-NbHVV9Uj3J8/TsZvFEGI5lI/AAAAAAAAAw0/RNsupKq9xmI/s1600/doag.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-NbHVV9Uj3J8/TsZvFEGI5lI/AAAAAAAAAw0/RNsupKq9xmI/s320/doag.jpg" width="212" /&gt;&lt;/a&gt;&lt;/div&gt;
This week I attended my first DOAG (German Oracle User Group) Conference. The conference was hosted in a part of the&amp;nbsp;Nürnberg Conference Centre. The venue was excellent : All sessions where in the same area on three different levels - so everything was in a short walking distance. The conference rooms itself where very good as well: a stage, just slightly higher than the audience, perfect lighting, good sound and screen quality and a wireless mic.&amp;nbsp;Everything a presenter - and an attendee as well - needs!&lt;br /&gt;
Something else that DOAG does better (not necessary healthier) than most other conferences: you can have food, snacks and drinks all day long. Not only during "coffee break" or lunch you can have slices of pizza, hot dogs or sweet cakes, but really all day long. And the quality of lunch and dinner was excellent as well: three courses and plenty stuff to choose from. &lt;br /&gt;
Then onto the content itself. There were 20 concurrent sessions, all started right at the hour (with a bell sign!), in al lot of different tracks, like: Database, Datawarehouse, BI, Development, Java, MySQL etc. Apart from some sidesteps now and then, I mainly focussed on the APEX Development area (no surprises here). I was very curious what the German speaking community does with APEX, as I wasn't familiar with most speakers. And I guess I am being spoilt by conferences like KScope, as a lot of the content couldn't adhere to those (high) standards. But the audience seemed to like it, so it probably complies with the overall expectations... (And I should more often go to sessions where I know nothing about!)&lt;br /&gt;
And what about my own presentation? I think it went pretty well, although I ended somewhat early. I rushed a bit though the first part, because a slot lasts "only" 45 minutes, so I had some time left in the end. But I think it came across quite well. Not that I got that many questions during my presentations (usually Germans don't interrupt the speaker) and just a few at the end - maybe due to the fact they thought they had to ask their question in English, which wasn't necessary of course. But in the next few days I got more questions during or between other sessions ;-).&lt;br /&gt;
Another minor thing, while I can understand German pretty well (about 95%), I really do prefer English for these kind of tech conferences... But still I might come back next year!!&lt;br /&gt;
So, next on the agenda, in a few weeks...UKOUG in Birmingham!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-6690587630580352320?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/11/ive-been-to-doag.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-NbHVV9Uj3J8/TsZvFEGI5lI/AAAAAAAAAw0/RNsupKq9xmI/s72-c/doag.jpg" height="72" width="72" /><thr:total>1</thr:total><georss:featurename>Nuremberg, Germany</georss:featurename><georss:point>49.45052 11.08048</georss:point><georss:box>49.285357499999996 10.764623 49.6156825 11.396336999999999</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-6420169812291940404</guid><pubDate>Wed, 09 Nov 2011 20:21:00 +0000</pubDate><atom:updated>2011-11-09T21:25:47.237+01:00</atom:updated><title>APEX Application running native on an iPhone</title><description>This video shows how native an APEX application can run on iPhone. And yes, it is really an APEX application you see. And the whole movie is just one take.&lt;br /&gt;
You can see how a customer from the standard APEX Demo Application - "re-templated" to an Mobile APEX Application - is stored as a regular contact on your iPhone. 
&lt;br /&gt;
&amp;nbsp; 
&lt;iframe allowfullscreen="" frameborder="0" height="480" src="http://www.youtube.com/embed/VpG6GVFtn6Y?rel=0" width="300"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-6420169812291940404?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/11/apex-application-running-native-on.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/VpG6GVFtn6Y/default.jpg" height="72" width="72" /><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-1852028838464429285</guid><pubDate>Tue, 08 Nov 2011 09:20:00 +0000</pubDate><atom:updated>2011-11-08T10:33:09.501+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">KScope</category><title>The "blind auditions": Evaluating Kscope12 abstracts...</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-SChgbYsmfSE/Trjycf6Ik1I/AAAAAAAAAwk/gnS8Y0DuN_U/s1600/7449716-rubber-stamp-marked-with-excellent.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-SChgbYsmfSE/Trjycf6Ik1I/AAAAAAAAAwk/gnS8Y0DuN_U/s1600/7449716-rubber-stamp-marked-with-excellent.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class="fullpost"&gt;Last week (and both weekends) I evaluated all the abstracts for &lt;a href="http://kscope12.com/" target="_blank"&gt;ODTUG KScope12&lt;/a&gt; in two tracks: APEX and Developer's Toolbox. In the APEX track 76 abstracts where submitted, Developer's Toolbox has just a few more, 82. All the abstracts will be evaluated by a team of (around) 8 people, so it doesn't all depend on my rating ;-)&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;For the first time, the abstracts where anonymous. So you don't know who wrote the abstract when rating it. In some cases, you can guess (and some had their own name in the abstract or summary, so that's easy). But I have to say, it makes it more difficult to evaluate. Because, for some people it doesn't really matter what the abstract says, you know it will be good anyhow (and for other ones, it is just the other way round). But luckily we have to rate the presenters as well - as far as you know them.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;We had to rate every abstract between 0 and 5, where 5 is a top one. My totals are: little under 20% I rated as 5, almost 40% got a 4, 30% received a 3 and the rest is 2 or lower.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt; The hottest subject in the APEX track is, without any doubt, mobile development. Seems like a lot of presenters are anxiously awaiting the next APEX release. In Developer's Toolbox, the subjects are more diverse, but, to my surprise, analytic functions are a trending topic! Not that these are new, but there seems to be a more general adoption and interest in this feature.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;And what did I learn from these "blind auditions"?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;That it is very hard to write a good abstract. And when you submit one, there always a line saying: Don't copy your abstract as a summery (or the other way round). They have two different goals. The abstract should convince the evaluator to select your presentation, while the summary should convince the conference attendee to attend your session. So you should give away more in the abstract - but please, not pages long - and maybe just make people curious in the summary part.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;But seeing all these great abstracts, I am really sure that Kscope12 will be even better than this years!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-1852028838464429285?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/11/blind-auditions-evaluating-kscope12.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-SChgbYsmfSE/Trjycf6Ik1I/AAAAAAAAAwk/gnS8Y0DuN_U/s72-c/7449716-rubber-stamp-marked-with-excellent.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-7235043145078811887</guid><pubDate>Tue, 08 Nov 2011 08:54:00 +0000</pubDate><atom:updated>2011-11-08T09:54:03.982+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blog</category><title>I revamped my blog</title><description>&lt;a href="http://3.bp.blogspot.com/-R3DLkmX992Y/Trjtn0XBVmI/AAAAAAAAAwc/ZiIL1ZT202g/s1600/Screen%2BShot%2B2011-11-08%2Bat%2B09.50.11.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://3.bp.blogspot.com/-R3DLkmX992Y/Trjtn0XBVmI/AAAAAAAAAwc/ZiIL1ZT202g/s200/Screen%2BShot%2B2011-11-08%2Bat%2B09.50.11.png" width="200" /&gt;&lt;/a&gt;I revamped my blog recently by enabling the latest Blogger feature: &lt;b&gt;&lt;i&gt;Dynamic Views&lt;/i&gt;&lt;/b&gt;.&amp;nbsp; You can pick your own view using the "&lt;i&gt;Magazine&lt;/i&gt;" menu on top.&lt;br /&gt;
I hope you like it. I do ;-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-7235043145078811887?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/11/i-revamped-my-blog.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-R3DLkmX992Y/Trjtn0XBVmI/AAAAAAAAAwc/ZiIL1ZT202g/s72-c/Screen%2BShot%2B2011-11-08%2Bat%2B09.50.11.png" height="72" width="72" /><thr:total>1</thr:total><georss:featurename>7431 Diepenveen, The Netherlands</georss:featurename><georss:point>52.2915271 6.1485912</georss:point><georss:box>52.2526791 6.0696272 52.330375100000005 6.2275552</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-5425185180521901669</guid><pubDate>Mon, 31 Oct 2011 10:04:00 +0000</pubDate><atom:updated>2011-11-08T10:33:25.478+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DOAG</category><title>In two weeks: My first DOAG Conference</title><description>From November 15 to 17, the annual DOAG (German Oracle User Group) Conference will be held in Nuremberg. I've never attended this conference before, so I am really curious how my experience will be - especially compared to the other big European Oracle event, the UKOUG conference three weeks later.
The agenda looks very promising. A very neat and tight three full days, with a new 45 minute session starting on the hour. Just like you expect from Germans ;-). And with 20 parallel sessions it seems about the same size as the UKOUG. The nice thing is, there are a lot of (German) speakers on the list, I've never seen before. So that could be interesting. And there are a lot of APEX sessions as well - see my schedule below, where I colored all the APEX sessions in blue! 
Some sessions will be translated - from German to English, some of them will be in English, but the majority will be in German. So a good opportunity to dust off my German... In the &lt;a href="http://mydoag.doag.org/formes/servlet/DocNavi?action=getFile&amp;amp;did=2793574&amp;amp;file=2011_K_Programmflyer.pdf"&gt;flyer&lt;/a&gt;, sessions are marked when they're in English. Mine isn't but I wasn't planning on doing it in German... But we'll see, maybe I'll end up in "&lt;i&gt;Genglish&lt;/i&gt;" or "&lt;i&gt;Engman&lt;/i&gt;"...&lt;br /&gt;
You can take a look at the whole program &lt;a href="http://www.doag.org/en/events/konferenzen/doag-2011/das-programm.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
Oh, yeah, one shameless plug : My session on the &lt;b&gt;XFILES &lt;/b&gt;(about the power of XML-DB used for creating an APEX Application - and with version control for APEX itself as an example) is Tuesday at 4PM...&amp;nbsp; &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-mr5TpvNazL8/Tq5xxwrflcI/AAAAAAAAAt8/jrVeliy8fZU/s1600/DOAG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://3.bp.blogspot.com/-mr5TpvNazL8/Tq5xxwrflcI/AAAAAAAAAt8/jrVeliy8fZU/s400/DOAG.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-5425185180521901669?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/in-two-weeks-my-first-doag-conference.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-mr5TpvNazL8/Tq5xxwrflcI/AAAAAAAAAt8/jrVeliy8fZU/s72-c/DOAG.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-8065684668240601795</guid><pubDate>Tue, 25 Oct 2011 08:21:00 +0000</pubDate><atom:updated>2011-10-25T10:21:41.285+02:00</atom:updated><title>Analytic function to the rescue! Again.</title><description>&lt;span class="fullpost"&gt;My current APEX project has a requirement to show a chart on one of the pages. No big deal. Usually. Because it should represent some value over time and that value would be stored in the database....could be every second, this chart could contain 10,000's, if not 100,000's points.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;So generating the XML, transferring the XML to the browser and interpreting the XML by the chart engine....was slow...&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;So I had to come up with a solution to reduce the number of points, without destroying the goal of the chart. Oh, and did I mention that the value could be stored every second, but could also be every minute, hour, whatever?&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;The first thing I came up with was the SAMPLE clause. Never heard of it and never used it before. You can just do a SELECT * FROM EMP SAMPLE(10) and as a result, you'll get 10% of the rows of the EMP table. The only withdrawal with that was, the result could be different every time. So when refreshing a chart, the chart could look really different. Another, more minor, hiccup was, the sample size&amp;nbsp; should be hard-coded and couldn't be parametrised (another "smaller" subrequirement).&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;So after some research I stumbled upon an Analytic Function, that might do the trick: &lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions101.htm"&gt;NTILE( number )&lt;/a&gt;. This function &lt;/span&gt;"divides an ordered data set into a number of buckets indicated by the number parameter and assigns the appropriate bucket number to each row" (quote from the documentation - couldn't say it better). So using this function, you can equally divide 100,000 records in 25 buckets - order by timestamp. And once you've done that you can easily calculate the average value per bucket. And the average timestamp as well. And just use these values to generate a more minimalistic XML document... O, and another fine thing: you can pass any number parameter to NTILE, so using the same query, generate either 10 or 10,000 points...&lt;br /&gt;
&lt;br /&gt;
As a - functionally useless - example a query to generate 15 rows with the average object_id and the average create date of all_objects: &lt;br /&gt;
&lt;pre name="code" class="SQL"&gt;select  to_char( startdate + ( enddate - startdate )/2
               , 'YYMMDD HH24:MI:SS' ) label
,       average
from
(
select min(created)  startdate
,      max(created)  enddate
,      avg(value)    average
from
(
select object_id value
,      created
,      ntile( 15 ) over ( order by created ) as bucket
from all_objects
)
group by bucket
order by 1
)
&lt;/pre&gt;
&lt;span class="fullpost"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-8065684668240601795?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/analytic-function-to-rescue-again.html</link><author>noreply@blogger.com (Roel Hartman)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-5641585942018445588</guid><pubDate>Thu, 20 Oct 2011 10:46:00 +0000</pubDate><atom:updated>2011-10-20T12:46:43.211+02:00</atom:updated><title>"I am running for the ODTUG Board of Directors"</title><description>No, not it's not about myself, but that's what my dear friend Martin Giffy D'Souza told me during last Oracle Open World. And I support his nomination whole hearted!&amp;nbsp;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
I know Martin since about 4 years since we met at one of the KScope conferences. Since then we'll meet each other twice a year, but are in touch more frequently by email, twitter and other social networks. Martin is passionate about his job and, knows really a lot about APEX and is always willing to share his thoughts, ideas and vision with others. And I think nobody is better suited for the ODTUG Board as Martin is!&lt;/div&gt;
&lt;div&gt;
If you wonder what Martin looks like...see the picture below, taken during the OOW Appreciation Event. He is the guy with the blue circle around his head ;-)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-d_06QsSXBfk/Tp_7GbvQFSI/AAAAAAAAAtk/6Y4eIkL6vlE/s1600/IMG_0410.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://4.bp.blogspot.com/-d_06QsSXBfk/Tp_7GbvQFSI/AAAAAAAAAtk/6Y4eIkL6vlE/s400/IMG_0410.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you are an ODTUG member, you can vote &lt;a href="http://www.odtug.com/apex/f?p=500:235:0::::P235_NEWS_ID:3661."&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can read Martin's official campaign and bio below...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: 'Segoe UI', Helvetica, Arial, sans-serif;"&gt;&lt;span style="font-family: Arial; font-size: xx-small;"&gt;&lt;span style="background-color: white; font-size: 13px;"&gt;&lt;b&gt;Campaign Statement&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="background-color: transparent;"&gt;
&lt;span style="background-color: transparent;"&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;I have attended ODTUG Kaleidoscope for several consecutive years and have been a presenter for the last three. The conference has allowed me to develop strong relationships with many others in the community, and the importance of these relationships has proven invaluable. I continually strive to give back to the community, using my personal time to answer questions through email, blogs, the Oracle forums, and by writing technical books. I would like to continue this spirit of giving back by joining the ODTUG Board of Directors.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;As a new board member I will bring a fresh perspective and out-of-the-box ideas to help promote ODTUG and deliver our message to the world. I am fortunate enough to have a successful blog with several thousand unique monthly visitors. It is through this platform, along with other opportunities such as my consulting firm blog, social networking, and the multiple annual conferences that I attend from which I intend to help share the ODTUG mission and values.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;The Board plays a pivotal leadership role as both a driving force and a face of the ODTUG community. I feel that my professional experience as a leader and mentor will help the Board guide and develop ODTUG for the future. The Board has responsibility to its most important group - the members. I will help ensure that the Board serves as both a voice and an ear for the entire ODTUG community; developers, DBAs, and technical experts of all things Oracle.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;Many thanks for your consideration.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;b&gt;Biographical Statement&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;Martin Giffy D’Souza is an Oracle ACE and award winning presenter and speaker. Most recently Martin was honored with the ODTUG Kaleidoscope 2011 Presenter of the Year award. Martin also serves as a Co-founder &amp;amp; CTO at ClariFit Inc., a consulting firm specializing in Oracle solutions. Martin’s career has seen him hold a range of positions within award winning companies and his experience in the technology industry has been focused on developing database-centric web applications using the Oracle technology stack. Martin is the author of the highly recognized blog&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="https://mail.logica.com/owa/redir.aspx?C=a16b15f1bfa24c20ae015c4f9c546275&amp;amp;URL=http%3a%2f%2fwww.talkapex.com%2f" target="_blank"&gt;&lt;span style="font-family: 'Times New Roman'; font-size: small;"&gt;&lt;span style="color: #0000cc; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;www.TalkApex.com&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;&lt;span style="background-color: white; font-size: 10pt; font-variant: normal;"&gt;&lt;i&gt;, and he has co-authored several APEX books including Expert Oracle Application Express, a collaboration of some of the most renowned APEX developers in the industry. He has presented at numerous international conferences such as ODTUG, APEXposed, and COUG. Martin holds a Computer Engineering degree from Queen’s University in Ontario, Canada.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-5641585942018445588?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/i-am-running-for-odtug-board-of.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-d_06QsSXBfk/Tp_7GbvQFSI/AAAAAAAAAtk/6Y4eIkL6vlE/s72-c/IMG_0410.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-5382674855858643983</guid><pubDate>Thu, 06 Oct 2011 20:42:00 +0000</pubDate><atom:updated>2011-11-08T10:33:54.721+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">APEX</category><title>OOW2011 - Announcing the APEX Marketplace</title><description>With the Oracle Database Cloud Service, Oracle also announced the APEX marketplace - a sort of App Store for APEX or APpEX Store if you like. When the Cloud Service is released, there will be number of free APEX Applications available for install. These are all created by Oracle itself and are very similar to the "Packaged Applications" that where available on OTN earlier. So if you're wondering why they're not available up there anymore and where they are gone: You got your answer now! &lt;br /&gt;
Just like any other APEX Application you can (probably) still export that application and install it on your own environment. But they will ne "locked down", although it's not quite clear what that actually means. Probably, to prevent support issues due to your own changes, you aren't allowed to make changes. BTW, not all Markterplace Applications will be available on OTN, some will, others won't .. &lt;br /&gt;
Another, not yet implemented, idea is that you can also upload your own application into the Marketplace. The application will be reviewed by Oracle before it's made available. Your application won't actually be up there, but an interested user will be redirected to your own site and be able to download it from there. And the idea is that you can either provide these applications for free or charge for it. Don't expect it to make you a millionaire, but, hey, that should go dollar-by-dollar anyway...&lt;br /&gt;
As a teaser a screenshot of the applications that will be available from the start: &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-y23UxlKtLy8/TpLBSILLmgI/AAAAAAAAAtY/_JpD8EWlfGw/s1600/productivity_apps.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://2.bp.blogspot.com/-y23UxlKtLy8/TpLBSILLmgI/AAAAAAAAAtY/_JpD8EWlfGw/s400/productivity_apps.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;center&gt;&lt;/center&gt;&lt;br /&gt;
&lt;div class="blogpress_location"&gt;
Location:&lt;a href="http://maps.google.com/maps?q=Ellis%20St,San%20Francisco,United%2States%4037.785369%2C-122.410099&amp;amp;z=10"&gt;Ellis St,San Francisco,United States&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-5382674855858643983?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/oow2011-announcing-apex-marketplace.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-y23UxlKtLy8/TpLBSILLmgI/AAAAAAAAAtY/_JpD8EWlfGw/s72-c/productivity_apps.jpg" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-641326134802211456</guid><pubDate>Thu, 06 Oct 2011 18:28:00 +0000</pubDate><atom:updated>2011-10-06T20:28:30.741+02:00</atom:updated><title>Five things you (probably) don't know about PL/SQL</title><description>This post is a (live) report from Tom Kyte's session with the title above he did in a packed room on Thursday morning on OOW2011.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Trigger trickery&lt;/b&gt;&lt;br /&gt;A before row trigger uses consistent read. So it uses the situation as it was when the statement started. So during long running updates the actual situation might differ from the 'consistent read' situation. That might lead to a rollback and re-fire of the statement, and thus the trigger as well. So every before statement and row level trigger (apart from the last row) might fire twice!&lt;br /&gt;So don't do anything you can't roll back in a trigger. If you call some autonomous auditing function in a trigger, you might encounter rows in your auditing table that didn't actually happen...&lt;br /&gt;Direct path loads bypass triggers...so triggers don't always fire!&lt;br /&gt;So, if you can avoid triggers...please avoid triggers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Ignore errors&lt;/b&gt;&lt;br /&gt;Error handling is done wrong more often than it's done right. Only catch exceptions that you are expecting - which means they aren't real exceptions anymore (like a NO_DATA_FOUND, but then in the same block as the SQL statement itself and not a general one at the end of your code). All the other ones should be raised, either immediately or at a later moment in the transaction. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Elaboration code&lt;/b&gt;&lt;br /&gt;You can use instantiation code in a package body, by defining an anonymous block within the body. It runs one time only per session (and after ever reinstantiation). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Implicit conversions&lt;/b&gt;&lt;br /&gt;Always use explicit conversions. Especially when you're relying on specific NLS settings, for example when converting dates! Implicit conversions might even lead to SQL injection by tweaking the NLS_DATE setting!!! &lt;br /&gt;Relying on implicit conversion also might have a performance penalty, because the conversion takes CPU time and has impact on the access path the optimizer comes up with. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Roles&lt;/b&gt;&lt;br /&gt;You need direct grants on an object in order to use that object in a PL/SQL object, roles don't work - on purpose. If you use "invoker rights", your code uses the roles and grants of the user who runs the code. Default code is created using "defined rights" and then the code uses the grants of the definer. Especially when you use invoker rights, you could encounter unexpected results, because table T of the definer might not be the same table T of the invoker....&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Cyril%20Magnin%20St,San%20Francisco,United%20States%4037.785651%2C-122.409078&amp;z=10'&gt;Cyril Magnin St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-641326134802211456?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/five-things-you-probably-don-know-about.html</link><author>noreply@blogger.com (Roel Hartman)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-3083515957223052589</guid><pubDate>Wed, 05 Oct 2011 23:02:00 +0000</pubDate><atom:updated>2011-10-06T01:02:06.931+02:00</atom:updated><title>OOW2011 - Announcing SQL Developer 3.1 New Features</title><description>&lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5658636558149521650'&gt;&lt;img src='http://lh6.ggpht.com/-93mafzZhiIk/ToeD-AmKkPI/AAAAAAAAAs8/LSTiskG7uQA/s288/0.jpg' border='0' width='88' height='88' align='left' style='margin:5px'&gt;&lt;/a&gt;The new SQL Developer version 3.1, contains a lot of new functionality. For instance a lot of DBA functionality that was already available within Enterprise Manager is exposed in SQL Developer. The developers are using the exact same code, but with a SQL Developer skin on top of it. &lt;br /&gt;Another very neat feature is the SQL Developer Cart. You can  drag and drop any object in the cart and it will automagically create a sql script file and zip it. I see certainly a use for that, for instance to deploy an new version of an application : all files neatly packed together...&lt;br /&gt;And of course, there is the Cloud Services. You can connect to your Oracle Database Cloud Service from within SQL Developer. Under the covers a RESTful web service is called and the results are processed. There is also functionality implemented to transfer data to and from the cloud, using DataPump. If you upload data into the cloud, the data pump file is automatically created, uploaded en processed. Very neat!&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Ellis%20St,San%20Francisco,United%20States%4037.785369%2C-122.410099&amp;z=10'&gt;Ellis St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-3083515957223052589?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/oow2011-announcing-sql-developer-31-new.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-93mafzZhiIk/ToeD-AmKkPI/AAAAAAAAAs8/LSTiskG7uQA/s72-c/0.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-6195300324100539382</guid><pubDate>Wed, 05 Oct 2011 22:45:00 +0000</pubDate><atom:updated>2011-10-09T11:24:47.931+02:00</atom:updated><title>OOW2011 - Announcing the Oracle Public Cloud</title><description>&lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5658627244277380610'&gt;&lt;img src='http://lh3.ggpht.com/-2rIOUXqdQP4/Tod7f3uANgI/AAAAAAAAAs0/3fniTdNs8p4/s288/0.jpg' border='0' width='281' height='195' align='left' style='margin:5px'&gt;&lt;/a&gt;Until this Wednesday, Oracle`s statement was "&lt;i&gt;use Oracle systems to build your own cloud&lt;/i&gt;", but this is changed drastically now! Starting November 1, Oracle does this for you. Just subscribe and within 20 minutes you are up and running in the brand new "&lt;b&gt;&lt;i&gt;Oracle Public Cloud&lt;/i&gt;&lt;/b&gt;".&lt;br /&gt;So what do you get after this 20 minutes of waiting? It depends on what you ordered ;-). Within the Oracle Public Cloud (OPC), the following options are available:&lt;br /&gt;- an Oracle Database Cloud Service&lt;br /&gt;- a Java Cloud Service&lt;br /&gt;- a Social Connect Cloud Service, based on WebCenter&lt;br /&gt;- some Fusion Applications Cloud Services: CRM and HCM.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Oracle Database Cloud Service&lt;/b&gt;&lt;br /&gt;The Oracle Database runs on Exadata. Within a database you get your own schema(s) and tablespace(s), so while the database itself is shared with others, all data is partitioned and caged. To enhance security, Transparent Data Encryption will be switched on, and DataVault might also be used (still under consideration). You can connect to the database over http, rest and JDBC. You can order a small, medium or large service - ranging from 50 up to 250 GB storage space. The data transfer is limited to 6 times the storage.&lt;br /&gt;When using this service it might be important where your data is stored (for instance when you don`t want to expose your data under the American Patriot Act). Therefore, next to the current datacenter in Austin (TX), an European center will be opened in Edinburgh, and more local centers are planned.&lt;br /&gt;You can access the database via the APEX Listener, using RESTful web services. So any language that "speaks" REST, can use this service. Another option is to sign up for an APEX environment. Within a few minutes, you can start developing or deploying your APEX application in the cloud. Similar to apex.oracle.com, but in this environment you are allowed to run production applications!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Oracle Java Cloud Service&lt;/b&gt;&lt;br /&gt;With the Oracle Java Cloud Service (OJCS) you get your own - prebuilt - Oracle Virtual Machine on an ExaLogic server. This OVM contains one or more WebLogic 11g servers. Just like the database counterpart, this environment will be (almost) instantly available and easy to use and manage. When signing up, or later, you can associate your OJCS with an Oracle Database Cloud Service or a Fusion Application Cloud Service. There will be a pre-built integration with Fusion Apps.&lt;br /&gt;&lt;br /&gt;When signing up for one or more of these services, you can have a onetime free trial for 30 days. After that trial period (or immediately if you like), you will be charged per month for the services you`re signed up for. Both the Java and the Oracle Cloud Service comes in small, medium and large - and it is possible to up or downgrade. According to Oracle the pricing will be "competitive" - whatever that may mean...&lt;br /&gt;Before this all goes live, there will be an Early Access period.&lt;br /&gt;&lt;br /&gt;Apart from the Cloud Services itself, also a lot of tools will be "cloud enabled". There will be cloud add-ons for Eclipse and JDeveloper, Enterprise Manager will get a Cloud Control feature and SQL Developer 3.1 will have cloud support as well for up- and downloading data (using REST web services or using the new "Data Pump for the cloud".&lt;br /&gt;&lt;br /&gt;So who`s this all for? I think the small version of the services could be very interesting for setting up a development environment within minutes. No need to order hard- an software when starting a project, or to reserve your space in the "private cloud" of your own company.&lt;br /&gt;The medium and large versions are targeted at test or production systems. But with the current size limit, only small and medium businesses - or isolated departmental applications, can use this. And therefore it`s not only a competitor for Google and Amazon, but also for the smaller hosting companies. But that will be dependent on the price...&lt;br /&gt;&lt;br /&gt;More information an sign up - when the time is there - on &lt;a href="http://cloud.oracle.com"&gt;cloud.oracle.com&lt;/a&gt;!&lt;br /&gt;&lt;center&gt;&lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5660141512097650626'&gt;&lt;img src='http://lh5.ggpht.com/-6yHJFGwWCzA/Tozct28F18I/AAAAAAAAAtI/ErXu4a1v_XY/s288/0.jpg' border='0' width='420' height='562' style='margin:5px'&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Ellis%20St,San%20Francisco,United%20States%4037.785369%2C-122.410099&amp;z=10'&gt;Ellis St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-6195300324100539382?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/oow2011-announcing-oracle-public-cloud.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-2rIOUXqdQP4/Tod7f3uANgI/AAAAAAAAAs0/3fniTdNs8p4/s72-c/0.jpg" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-318587439876437599</guid><pubDate>Tue, 04 Oct 2011 20:31:00 +0000</pubDate><atom:updated>2011-11-08T10:33:54.717+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">APEX</category><title>New APEX feature regarding RESTful web services</title><description>&lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5659737372249799138'&gt;&lt;img src='http://lh6.ggpht.com/-ijwlNlb30ns/TottJ0rzueI/AAAAAAAAAtE/T4h37WW8p1Q/s288/0.jpg' border='0' width='281' height='145' align='left' style='margin:5px'&gt;&lt;/a&gt;The upcoming Application Express version 4.2 - date not announced yet - will (or might), amongst other features regarding mobile support, also contain the functionality for managing the Apex Listener Resource Templates. From the SQL Workshop you can access the RESTful web services. And so create new or manage existing services of the APEX Listener. So therefore keep all stuff within one IDE. &lt;br /&gt;Very nice. It will enhance the use of the Resource Templates enormously! &lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Howard%20St,San%20Francisco,United%20States%4037.784317%2C-122.401484&amp;z=10'&gt;Howard St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-318587439876437599?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/new-apex-feature-regarding-restful-web.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-ijwlNlb30ns/TottJ0rzueI/AAAAAAAAAtE/T4h37WW8p1Q/s72-c/0.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-6963637715445029888</guid><pubDate>Tue, 04 Oct 2011 00:14:00 +0000</pubDate><atom:updated>2011-10-04T02:30:57.998+02:00</atom:updated><title>Know your code : Automate PL/SQL standard enforcement</title><description>&lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5659427369559151762'&gt;&lt;img src='http://lh6.ggpht.com/-cCMr4f29vY8/TopTNSqyVJI/AAAAAAAAAtA/WfKTdPoGr9s/s288/0.jpg' border='0' width='224' height='281' align='left' style='margin:5px'&gt;&lt;/a&gt;This is a report of Lewis Cunningham's session at OOW11 on the subject t mentioned above.&lt;br /&gt;For code you not only need coding and naming standards, but performance and testing standards as well. And of course you need to check wether your code complies with your standards. For analysis you can either do static or dynamic analysis (and instrumentation as well). For static analysis you can use the data dictionary, PL/Scope and the source code itself. For dynamic analysis you have to use profilers. &lt;br /&gt;For retrieving the data dictionary you can query the _SOURCE, _DEPENDENCIES, _PROCEDURES and related views. When using PL/Scope you have to recompile the code with a "identifier:all" setting switched on. Then the results are retrievable from the _IDENTIFIERS view.&lt;br /&gt;Analysis should be done at the earliest stage, that is during coding. PL/Scope can be very handy for validating naming conventions, impact analysis and identifying scoping issues. &lt;br /&gt;For dynamic analysis, you have to set a baseline first. Save the timings for that baseline and check that after you made changes. Code coverage is also useful to detect pieces of dead code. You can get this by subtracting the dynamic, executed, code from the static, available, code. Alas code coverage is not 100%, because PL/Scope doesn't detect SQL. &lt;br /&gt;All this stuff should and can be automated....&lt;br /&gt;All details are in the Expert PL/SQL book. &lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Howard%20St,San%20Francisco,United%20States%4037.784317%2C-122.401484&amp;z=10'&gt;Howard St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-6963637715445029888?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/know-your-code-automate-plsql-standard.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-cCMr4f29vY8/TopTNSqyVJI/AAAAAAAAAtA/WfKTdPoGr9s/s72-c/0.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-8383675058891721652</guid><pubDate>Mon, 03 Oct 2011 16:27:00 +0000</pubDate><atom:updated>2011-10-03T18:27:12.233+02:00</atom:updated><title>OOW2011 - Announcing Oracle`s Big Data Appliance</title><description>During the Oracle ACE Director briefing, Mark Townsend, VP Database Product Management, did "&lt;i&gt;State of the Union&lt;/i&gt;" on the Oracle database. This post is my report of his talk...&lt;br /&gt;At this moment around 55% of the installed base of the Oracle database is on 11.2. Last year, Oracle made more money from selling more database licenses and more options on existing installations.&lt;br /&gt;Mark mentioned that there are customers with 1,000`s of databases (and even one with 80,000!) - all using different versions of the database, of the operating system, storage etc. This situation is very hard to maintain and to keep up and running. Inn Oracle`s view, consolidation into a "private cloud" is the solution, and therefore Oracle offers Exadata. One (or less) databases are easier to secure, easier to make high available and easier to upgrade. And when you use Oracle software troughout your application stack, why not use Oracle hardware as well? So Oracle is striving towards a "&lt;i&gt;red stack&lt;/i&gt;" (i.e. all Oracle). &lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5658617086027063330'&gt;&lt;img src='http://lh3.ggpht.com/-O_F6dvRfqZk/TodyQlSZYCI/AAAAAAAAAss/sL_S0NPk0cM/s288/0.jpg' border='0' width='281' height='210' align='left' style='margin:5px'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The latest version of the Oracle database is 11.2.0.3. 11.2.0.4 is planned for somewhere next year. After that, Oracle 12 will replace the "&lt;i&gt;g&lt;/i&gt;" with a "&lt;i&gt;c&lt;/i&gt;" - for "&lt;i&gt;cloud&lt;/i&gt;" of course! - and should be available somewhere next year as well. Oracle 12c is not a subject on this OpenWorld. You can sign up for the beta test, which will start in November.&lt;br /&gt;Last week, the Oracle Database Appliance (ODA) was announced. The ODA comes with standard 24 cores, but you can license per core - completely different from the current licensing where you have to pay for all cores that are available in your hardware. In Oracle`s terminology, an "&lt;b&gt;&lt;i&gt;Appliance&lt;/i&gt;" is engineered for simplicity, anything called "&lt;i&gt;Exa-whatever&lt;/i&gt;" is engineered for speed&lt;/b&gt;. Next to the ODA, Oracle announced this Monday the "&lt;i&gt;Big Data Appliance&lt;/i&gt;", using a (new) Oracle NoSQL database (based on the Berkeley DB). This appliance will do massively parallel batch processing with Hadoop. Therefore Oracle will distribute Hadoop (and support it as well). There will be an Oracle Data Integrator (ODI) to get the data from Hadoop into a relational Oracle database. Another new product in this appliance is "&lt;i&gt;&lt;b&gt;Oracle R&lt;/b&gt;&lt;/i&gt;". "&lt;i&gt;R&lt;/i&gt;" is open source replacement for SAS - a statistical tool for data-analysts (like the software used by the female computer wizard in the tv-series Criminal Minds). So the BDA consists of this whole stack (as I understood it). The BDA solution (or framework or architecture) is aimed at processing huge bulks of no-SQL data (key-value pairs), like user clicks on website, phone calls etc, but is good for oldfashioned ETL too!&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Ellis%20St,San%20Francisco,United%20States%4037.785369%2C-122.410099&amp;z=10'&gt;Ellis St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-8383675058891721652?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/09/oow2011-database-update.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-O_F6dvRfqZk/TodyQlSZYCI/AAAAAAAAAss/sL_S0NPk0cM/s72-c/0.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-4439540418561391158</guid><pubDate>Mon, 03 Oct 2011 16:21:00 +0000</pubDate><atom:updated>2011-10-03T18:25:27.863+02:00</atom:updated><title>OOW2011 - Announcing Oracle NoSQL</title><description>&lt;a href='https://picasaweb.google.com/110887914562564459264/DropBox?authkey=Gv1sRgCIiem77Ese3GsAE#5658617713402735442'&gt;&lt;img src='http://lh6.ggpht.com/-k6gJypICV5g/Tody1Gcaa1I/AAAAAAAAAsw/pg7Dz_09oqQ/s288/0.jpg' border='0' width='281' height='166' align='left' style='margin:5px'&gt;&lt;/a&gt;&lt;br /&gt;NoSQL databases have already been around for a long time. Even Oracle owns one: Berkeley DB. Other well known databases are Voldemort, MongoDB and Cassandra.&lt;br /&gt;A NoSQL database contains only key-value pairs and targets on only simple operations: store and retrieve data. Any relationships and other rules should be enforced by the application itself. A NoSQL databases has a small footprint, is embeddable, (very) fast, scalable and easy to use and usually runs on a lot of operating systems.&lt;br /&gt;Therefore the sweet spot of NoSQL databases is processing loads of simple and unstructured data, like messaging, queueing and user web clicks. Not surprising that the big social networks, like LinkedIn, Facebook, Google and Amazon are heavy users of NoSQL databases. For some more advanced use some NoSQL databases have options for concurrency, transactional processing and high availability. Of course you can store this kind of data in a relational database, like the "regular" Oracle database as well, but that comes with a much higher price tag. An Oracle database can do so much more than just store data, but even if you don`t need those features, you still have to pay for them...&lt;br /&gt;This Monday Oracle announced their knew Big Data Appliance in order to acquire, organize and analyze large volumes of simple, unstructured data in ann easy way. Part of this appliance is the new Oracle NoSQL database, which is - surprise, surprise - based on Berkeley DB. But, unlike most competitors, an Oracle NoSQL has, next to a C++ and Java API, also a SQL API! So NoSQL doesn`t mean no SQL at all, but &lt;b&gt;Not Only SQL&lt;/b&gt;...&lt;br /&gt;Oracle NoSQL will be available in two versions: a Community Edition which is free and open source and an Enterprise Edition. The functionality is the same, there is only a difference in the licensing... I am very curious how this will land in the, usually very independent and open source minded, NoSQL world!&lt;br /&gt;More info on &lt;a href="http://www.oracle.com/technetwork/database/nosqldb/overview/index.html"&gt;Oracle OTN&lt;/a&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Ellis%20St,San%20Francisco,United%20States%4037.785369%2C-122.410099&amp;z=10'&gt;Ellis St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-4439540418561391158?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/oow2011-announcing-oracle-nosql.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-k6gJypICV5g/Tody1Gcaa1I/AAAAAAAAAsw/pg7Dz_09oqQ/s72-c/0.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-7549713533658224046</guid><pubDate>Mon, 03 Oct 2011 01:45:00 +0000</pubDate><atom:updated>2011-10-03T03:52:36.376+02:00</atom:updated><title>OOW2011 - Announcing the Exalytics machine</title><description>After a long rerun about Exadata, Exalogic and the Supercluster, during Sunday`s keynote, Larry finally announced the new &lt;b&gt;Exalytics&lt;/b&gt; machine. Extreme speed, due to 1 TB DRAM (holding 5 to 19 TB of compressed data) and 40 cores of Xeon CPUs. It is using a new version of TimesTen - the in memory database - and/or an new version of Essbase (for OLAP) and a new OBIEE. It not only handles relational and multidimensional data, but also "unstructured" data. You should connect the Exalytics machine to your Exadata machine with Infiniband. Then load (all) data into the Exalytics machine and start analyzing and processing in memory. It uses a "&lt;i&gt;Heuristic Adaptive In-Memory Cache&lt;/i&gt;", so data changes are detected and refreshed in the machine. Oracle claims it is around 20 times faster than their current configurations.&lt;br /&gt;Price tag? Not mentioned...&lt;br /&gt;&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Howard%20St,San%20Francisco,United%20States%4037.782809%2C-122.403532&amp;z=10'&gt;Howard St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-7549713533658224046?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/oow2011-announcing-exalytics-machine.html</link><author>noreply@blogger.com (Roel Hartman)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-4979188798738141038</guid><pubDate>Sun, 02 Oct 2011 22:46:00 +0000</pubDate><atom:updated>2011-10-03T00:46:33.260+02:00</atom:updated><title>Connecting NoSQL and Oracle Databases</title><description>NoSQL databases are very good in storing and retrieving large amounts of data. Analysis, on the other hand, is hardly possible. And you probably need that to actually make money out of Facebook, LinkedIn etc. &lt;br /&gt;Therefore you need to transfer the data to a "regular" database, like Oracle. &lt;br /&gt;There are two options to do this kind of stuff. The first one is with a MySQL Data Hub, that handles both the NoSQL and Oracle tables as external. Another option is to transfer the data to Oracle directly. Quest offers some (free) products in this area, like &lt;a target="_blank" href="http://www.quest.com/toad-for-cloud-databases/"&gt;TOAD for Cloud Databases&lt;/a&gt;. Very interesting and definitely need to try this out. Thinking about APEX talking to a NoSQL database now...&lt;br /&gt;&lt;p class='blogpress_location'&gt;Location:&lt;a href='http://maps.google.com/maps?q=Howard%20St,San%20Francisco,United%20States%4037.782809%2C-122.403532&amp;z=10'&gt;Howard St,San Francisco,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-4979188798738141038?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/10/connecting-nosql-and-oracle-databases.html</link><author>noreply@blogger.com (Roel Hartman)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-2698584658418360235</guid><pubDate>Fri, 30 Sep 2011 00:15:00 +0000</pubDate><atom:updated>2011-10-03T19:31:28.003+02:00</atom:updated><title>OOW2011 - Database update</title><description>The original blogpost will appear again "soon"...
&lt;br/&gt;
&lt;br/&gt;Update : The stuff that was originally up here is now rewritten in the posts on "Oracle NoSQL Database" and the "Big Data Appliance".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-2698584658418360235?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/09/oow2011-database-update_30.html</link><author>noreply@blogger.com (Roel Hartman)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-8677897398381075553</guid><pubDate>Sat, 24 Sep 2011 10:30:00 +0000</pubDate><atom:updated>2011-09-24T12:52:58.933+02:00</atom:updated><title>OOW2011 - Right around the corner!</title><description>Within one week San Francisco will be colored "Oracle red" again for Oracle Open World - including Oracle Develop and JavaOne. Around 50,000 - usually easy to recognize - attendees will cover the streets, while moving from one conference location to the other. And I am privileged to be one of them! In fact, I am even more privileged to attend the Oracle ACE Director briefing at Oracle HQ in Redwood on Thursday and Friday before the big event... So that will make about 1.5 week in the Bay Area.&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
Creating a schedule for OOW is as difficult as ever. No matter what tools they provide, the endless possibilities of picking that most interesting session amongst the 100 in the same&amp;nbsp;time slot&amp;nbsp;is cumbersome. And then there are all the "social events"... it is hard to pick the right one there too, because there is a large amount of overlap as well. But I managed...and created this schedule for that week - where orange = APEX, green = social and the rest is....well, the rest.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-VeIujoykF2I/Tn22W_EKisI/AAAAAAAAAso/A01pGRDqFEw/s1600/OOW-Schedule.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="353" src="http://3.bp.blogspot.com/-VeIujoykF2I/Tn22W_EKisI/AAAAAAAAAso/A01pGRDqFEw/s400/OOW-Schedule.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
So it is going to be a busy week...but good fun anyway. The thing I like is that there are no "real" sessions before 10AM!
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-8677897398381075553?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/09/oow2011-right-around-corner.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-VeIujoykF2I/Tn22W_EKisI/AAAAAAAAAso/A01pGRDqFEw/s72-c/OOW-Schedule.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-1605916480729772720</guid><pubDate>Tue, 20 Sep 2011 07:20:00 +0000</pubDate><atom:updated>2011-11-08T10:33:54.710+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">APEX</category><title>APEX Application Export from SQL Developer (issue)</title><description>&lt;span class="fullpost"&gt;I just deployed an APEX Application from one development to a test server. Therefore I used the great "Database Unload" &lt;/span&gt;&lt;span class="fullpost"&gt;feature &lt;/span&gt;&lt;span class="fullpost"&gt;of SQL Developer: it generates a script with all DDL and data - or a subset if you wish. I also used the "Quick DDL" option for creating a APEX Export file from with SQL Developer. Installation was a breeze, just run those two scripts and you're done...&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;You think...&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;But then I noticed something strange...in my Interactive Reports I only saw the ID's of the foreign key columns, instead of the description. And it wasn't just one, it was all over the place! It seemed that the SQL Dev export didn't handle the IR-columns that are defined as "Display as Text (based on LOV)" with a Named List of Values properly. The Named List of Values was just missing from the column definition. I don't know if this is solved in version 4.1 (as I was running 4.0.2 on this box), but be aware...&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Also - and that may be more obvious - the Supporting Objects aren't exported either. So a little tip of advice here: &lt;i&gt;Use the export functions of APEX itself&lt;/i&gt;....&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-1605916480729772720?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/09/apex-application-export-from-sql.html</link><author>noreply@blogger.com (Roel Hartman)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-20567072.post-6413017178935842449</guid><pubDate>Tue, 13 Sep 2011 12:12:00 +0000</pubDate><atom:updated>2011-09-13T14:13:11.929+02:00</atom:updated><title>Simple script to upload images into XML-DB (EPG)</title><description>&lt;span class="fullpost"&gt;When you develop your APEX application using the APEX Listener or OHS, it is a good habit to create a separate (sub)folder to serve your images - and other files - into your application. Usually the name of the subfolder reflects the name of the application. So you reference these images, like an "enabled" image in your application by '#IMAGE_PREFIX#my-app/enabled.png'. So far so good.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;But now you need to deploy this to a server that is using the Embedded PLSQL Gateway (EPG)? How to serve these images into that application without changing your code? Uploading the images the regular way into the workspace or application doesn't help, because you won't get the subdirectory prefix. The only way (I know of) is to upload these images into the XML-DB Repository.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
So I created this script - feel free to use, edit or whatever you want to do with it (no guarantees!):&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-t51KAfVYUyM/Tm9IA3M8WdI/AAAAAAAAAsg/iyVgDXQWIbQ/s1600/UploadPNG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://3.bp.blogspot.com/-t51KAfVYUyM/Tm9IA3M8WdI/AAAAAAAAAsg/iyVgDXQWIbQ/s400/UploadPNG.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20567072-6413017178935842449?l=roelhartman.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://roelhartman.blogspot.com/2011/09/simple-script-to-upload-images-into-xml.html</link><author>noreply@blogger.com (Roel Hartman)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-t51KAfVYUyM/Tm9IA3M8WdI/AAAAAAAAAsg/iyVgDXQWIbQ/s72-c/UploadPNG.jpg" height="72" width="72" /><thr:total>4</thr:total></item></channel></rss>

