Thursday, January 25, 2007

What APEX? How APEX? Why APEX? The best APEX book is coming...

I often get questions about where to find information about APEX.

Till today we can say:
- see the Oracle Application Express homepage on OTN
- read the APEX manual and Help
- try APEX yourself, there's an online development environment available on http://apex.oracle.com
- read some APEX pdf's (for ex. the Two Day APEX Dev. Guide)
- read some blogs (for ex. this one ;-) see also my APEX links section)
- ...

But now we can add to this;
- read "the very best APEX book" (written by John Scott and Scott Spendolini)

I had the privilege to already read some parts ;-)
and I must say, this book will conquer a lot of APEX fans.
I'm not sure I'm allowed to give a lot of details, but this is what John said on his Blog:
I’ve approached it from the angle of how to solve ‘real world problems’ with APEX, e.g. ‘I want to do XYZ, how can I do it?”. The book definitely assumes you
have a reasonable working knowledge of APEX already, so I don’t have to cover things that are already covered in the Oracle supplied documentation.
I can agree with John's explanation .
And for the inpatients persons... you can already pre-order it on Amazon.

Monday, January 22, 2007

Presenting at Collaborate07 and APEX meetup

Last week I received a confirmation my paper for Collaborate07 was accepted by the IOUG Conference Committee.

I really look forward to do my first presentation in the States... and can there be a better place then Las Vegas? Glitter and glamor! I'll try to adapt my presentation to the theme of the place ;-)

If you want to see me presenting, you should get up early in the morning on the last day:
Session Code: 467
Abstract Title: APEX by Example - Shared Components
Date: 19-Apr-2007 at 8:30 AM - 9:30 AM

We're also organising another APEX meetup. This time it's called: "Collaborate07 APEX meetup", or what did you expect? ;-)

If you like to meet some members of the APEX Development team, the APEX SIG or some other APEX lovers, feel free to subscribe here, like that we've an idea who will join. A few days before the start of Collaborate07 we'll fix the date and the place.
(PS: The Registration Application is created in APEX and uses XML Charts!)

Sunday, January 14, 2007

HTMLDB or APEX? The winner is ...

I was playing a bit with googlefight. It's so amusing to see that my wife could beat Pamela Anderson ;-)

I also did the test on popularity between HTMLDB and APEX. Oracle made the good decision to change the name (Application Express is even more popular)


And how about me against Larry Ellison?

Indeed... I've still some work to do.

Saturday, January 13, 2007

Can Larry do this?

A friend of me showed me a nice little video... Just have a look here.
Maybe you saw it already, as it's on YouTube from June 2006, but I find it really amazing!
I'm considering to open my next presentation like that too ;-)

Did you notice it? A little scream... I suppose Steve felt Oracle at a moment ;-)

Tuesday, January 09, 2007

Oracle and APEX to the top!

On June 9, 2007 I'll try to climb (with a bike) the "Mont Ventoux" in France.
I don't have any experience with climbing or biking, but I find it a challenge and decided to give it a try.

My goal is to get a picture on the top with an Oracle/APEX flag!

If you want to sponsor me, you're free to drop me a suggestion. ;-)

Of course I'll blog about my ride, so you definitely need to check this blog in June.

Monday, January 08, 2007

DGT Explained (1 bis) - Thumbnail Expander

This post shows how I integrated Highslide JS 2.2.7 in DG Tournament.

Background
Highslide, formerly Vevstein Thumbnail Expander, is a javascript written by Vikjavev that allows you to streamline the use of thumbnail images on web pages.

OS-level
1. download highslide and unzip the file
2. copy the higslide directory to your /i/ or www directory

APEX-level
1. Go to "Shared Components" and create a stylesheet

/* highslide */
.highslide {
cursor: url(highslide/graphics/zoomin.cur), pointer;
outline: none;
}
.highslide img {
border: 2px solid gray;
}
.highslide:hover img {
border: 2px solid white;
}
.highslide-image {
cursor: poiner; /* opera */
cursor: url(highslide/graphics/zoomout.cur), pointer;
border: 2px solid white;
}
.highslide-image-blur {
cursor: pointer;
cursor: hand;
}
.highslide-caption {
display: none;
border: 2px solid white;
border-top: none;
font-family: Verdana, Helvetica;
font-size: 10pt;
padding: 5px;
background-color: white;
}
.highslide-display-block {
display: block;
}
.highslide-display-none {
display: none;
}
.highslide-loading {
display: block;
color: white;
font-style: 'MS Sans Serif';
font-size: 9px;
font-weight: bold;
text-transform: uppercase;
text-decoration: none;
padding: 3px;
opacity: 0.60; /* w3c */
filter: alpha(opacity=60); /* ie */
border-top: 1px solid white;
border-bottom: 1px solid white;
background-color: black;
padding-left: 22px;
background-image: url(highslide/graphics/loader.gif);
background-repeat: no-repeat;
background-position: 3px 1px;
}
a.highslide-credits,
a.highslide-credits i {
padding: 2px;
color: silver;
text-decoration: none;
font-size: 10px;
}
a.highslide-credits:hover,
a.highslide-credits:hover i {
color: white;
background-color: gray;
}

2) In the template from the application, reference the created stylesheet and javascripts (Shared Components - Templates - Page)


3) Create a page and a region report based on a Select. In the Image_id column add this as HTML Expression (Edit Column)



4) create an HTML Region on the same page or on page 0 (to have it on every page)


5) create the procedures to show the thumbnail and the real image
create or replace PROCEDURE tdg_pr_show_image (p_image_id IN NUMBER)
AS
l_mime VARCHAR2 (255);
l_length NUMBER;
l_file_name VARCHAR2 (2000);
lob_loc BLOB;
BEGIN
SELECT mime_type, image_blob, image_name, DBMS_LOB.getlength (image_blob)
INTO l_mime, lob_loc, l_file_name, l_length
FROM tdg_image
WHERE image_id = p_image_id;

-- Set up HTTP header
-- Use an NVL around the mime type and if it is a null, set it to
-- application/octect - which may launch a download window from windows
OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE);
-- Set the size so the browser knows how much to download
HTP.p ('Content-length: ' l_length);
HTP.p ('Expires: ' TO_CHAR (SYSDATE + 50, 'Day, DD Month, YYYY HH24:MI:SS'));
-- The filename will be used by the browser if the users does a "Save as"
HTP.p ('Content-Disposition: attachment; filename="' l_file_name '"');
-- Close the headers
OWA_UTIL.http_header_close;
-- Download the BLOB
wpg_docload.download_file (lob_loc);
END tdg_pr_show_image;

create or replace PROCEDURE tdg_pr_show_thumbnail (p_image_id IN NUMBER)
AS
l_mime VARCHAR2 (255);
l_length NUMBER;
l_file_name VARCHAR2 (2000);
lob_loc BLOB;
BEGIN
SELECT mime_type, thumbnail_blob, image_name, DBMS_LOB.getlength (thumbnail_blob)
INTO l_mime, lob_loc, l_file_name, l_length
FROM tdg_image
WHERE image_id = p_image_id;

-- Set up HTTP header
-- Use an NVL around the mime type and if it is a null, set it to
-- application/octect - which may launch a download window from windows
OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE);
-- Set the size so the browser knows how much to download
HTP.p ('Content-length: ' l_length);
HTP.p ('Expires: ' TO_CHAR (SYSDATE + 50, 'Day, DD Month, YYYY HH24:MI:SS'));
-- The filename will be used by the browser if the users does a "Save as"
HTP.p ('Content-Disposition: attachment; filename="' l_file_name '"');
-- Close the headers
OWA_UTIL.http_header_close;
-- Download the BLOB
wpg_docload.download_file (lob_loc);
END tdg_pr_show_thumbnail;

When you click on the image (thumbnail) of the user on the Shoutbox in DG Tournament, the image will enlarge, click once more to make it back to normal (thumbnail).

Tuesday, January 02, 2007

Stats of this Blog for 2006

I started collecting stats in April last year. June was "the best" month due to the success of my APEX World Cup application (and the post on Tom Kyte's blog).

The statistics of this blog for the year 2006