Thursday, May 26, 2016
Posted by Dimitri Gielis at 23:30
When you Google this question you get many different answers, but this answer of Google Developers answers it for me in short (click the link for more details):
- HTTPS protects the integrity of your website/APEX app
- HTTPS protects the privacy and security of your users
- HTTPS is the future of the web; many new technologies only work with https (for example Service Workers; you can read more about Service Workers and APEX in my presentation)
Before websites had an HTTP portion and an HTTPS portion, which became active when you would login to the site, but nowadays everything is under HTTPS. Google will actually rank your site higher when it's using HTTPS. Look at the sites you visit; many of them will now use HTTPS as a default.
HTTPS on localhost
If you're developing locally, you don't really need HTTPS on localhost, but I still like to have that.
Here're the steps I did in Chrome on my Mac (OSX) to get the nice green lock when developing locally (works also with APEX Front-End Boost)
- In the address bar, click the little lock with the X. This will bring up a small information screen. Click the button that says "Certificate Information."
- Click and drag the certificate image to your desktop.
- Double-click it. This will bring up the Keychain Access utility. Enter your password to unlock it.
- Be sure you add the certificate to the System keychain, NOT the login keychain.
- After it has been added, double-click it.
- Expand the "Trust" section. "When using this certificate," set to "Always Trust"
- Close Keychain Access and restart Chrome, and your self-signed certificate should be recognized now by the browser.
For years I've been using SSL certificates ordered from Godaddy, but depending the certificate you get, it might not be that cheap. The APEX R&D website is a multi-site certificate - the same certificate is used for the APEX Office Print website.
But there's some good news... you can get SSL for free too (and it's very easy to do!), thanks to Letsencrypt. I used Letsencrypt to protect the Euro2016challenge.eu APEX app/website for example.
Here's the Getting Started Guide from Let's Encrypt. This is the command I used (after installing the package):
./letsencrypt-auto certonly --webroot -w /var/www/euro2016 -d euro2016challenge.eu -d www.euro2016challenge.eu
If you're not yet on https with your APEX app/site, I would definitely recommend looking into it :)
Posted by Dimitri Gielis at 00:07
Friday, April 22, 2016
My guess is either you went to https://apex.oracle.com and got a free account or Oracle Application Express was already in your company and somebody told you the url you could connect to. For me that is really the power of APEX, you just go to an url and within minutes you created your first app.
Staying within the APEX framework?
Oracle closely looks at all the web technology, makes choices which streams they will follow (e.g. JQuery framework) and implements and tests it so we don't have to worry about a thing.
Going to the next level?
The web is evolving fast, and I mean really fast (!) so maybe you saw something really nice on the web you wish you had in your APEX app, but it's not yet declaratively available... now the nice thing about APEX is that you can extend it yourself by using plugins (see the plugins section on apex.world) or just by writing the code yourself as other web developers do.
Trying new web technology locally
When you want to try those shiny new web things in your APEX app, I recommend trying to get those things working locally first. Last year for example I gave a presentation about Web Components at different Oracle conferences and this year I'll present on Service Workers. All the research I did on those topics where initially not in an APEX context. But how do you get started to try this now?
The first thing you need is a local web server. Depending the OS you're on, you might already have one (e.g. IIS, Apache, ...), if not, here's what I do on OSX.
OSX comes with Python and that allows to create a simple web server.
Open Terminal and go to the directory where you want to test your local files and run:
$ python -m SimpleHTTPServer 8000 (Python 2.7)
$ python3 -m http.server 8000 (Python 3.0)
There're many other ways to have a local web server, see for example this article or a simple web server based on node.js.
To do this development, you probably want some tools; an editor like Sublime or Atom, a CSS and JS preprocessor, Browser extensions, build tools like Gulp etc.
You don't need all those tools, just an editor is fine, but soon enough you want to be more efficient in your development, and tools just help :) Here're some nice articles about different tools: Google Developers - Getting Started, Keenan Payne 13 useful web dev tools and Scott Ge list of web development tools.
Going from custom web development to APEX - use APEX Front-End Boost
So you have your local files developed and next is to integrate them in your APEX app.
You add some code to your APEX pages and upload the files so APEX can see them.
If everything works immediately - great, but most of the time you probably need to make more changes, so you change your local files, test again, upload etc. You could streamline this a bit with setting up a proxy or referencing localhost files while in development... But then you're happy your part of the APEX community...
To ease the above development and integration with APEX, Vincent Morneau and Martin Giffy D'Souza created the excellent APEX Front-End Boost package. The package is using many of the above tools behind the scenes, but it's all integrated in a nice box. This video goes in full detail what the tool is doing for you and how to use it. In short; it fills the bridge of working with a file locally, making it production ready and seeing it immediately in your APEX app :)
In the next post I'll talk about the importance of using https and also setting it up for localhost (also for APEX Front-End Boost).
Posted by Dimitri Gielis at 11:54
Wednesday, January 20, 2016
Last year I blogged about highlighting negative numbers in an APEX Report, the CSS only way.
At that time I gave two alternative approaches; by using JQuery or SQL, but it looks like I didn't do those posts yet, till somebody reminded me. This post is about using SQL to highlight something in a report.
Let's say we want to highlight negative numbers in a report (as in the previous post):
when amount < 0
end as class
order by id
Posted by Dimitri Gielis at 16:31
Thursday, October 15, 2015
Posted by Dimitri Gielis at 09:20
Monday, October 12, 2015
Only 3 days left to submit your abstract for KScope 16... so don't wait longer, submit now! :)
My first ODTUG conference was in 2006 and it was awesome. On this blog you'll find different blog posts about my experience and why I love it, so I won't go over that... but from time to time I get some questions about being a presenter at the event.
"What should I submit, I don't know what to talk about?"
The topics in the Oracle Application Express track are following:
- Integration: Relates to any work where other products are integrated with APEX or a gap is bridged between platforms. Perhaps is integration with EBS, SAP, Raspberry Pi, Node.js, OAuth, REST, etc...
- New Release: Presentations that relate to the latest version of APEX. Typically the Oracle development team is presenting those topics.
- Real World: Everybody loves real life examples. This is anything where a real life system is presented. The problem is explained and how APEX was used to solve it.
- Detail Plunge: These are presentations on any topic, but the topic, even if it seems narrow, is explored in detail and with focus. It doesn't have to be complicated. I could be building plugins or Dynamic Actions.
- Other Application Express: Everything else goes here. This is the catch-all bucket.
The way I chose my topics typically fall in one of following categories:
- I learned different things and combine them in a presentation. E.g. my presentation on the way we develop
- I worked on something in the last months and think it might be useful for others. For example my printing in node.js presentation
- I read about something cool I want to investigate, so by submitting the topic I force myself to have it completely researched before a certain date. An example of that was my presentation on Web Components.
"Why even bother, I won't be selected"
Well, without submitting you don't know. What do you have to lose? I'm sure I don't speak for myself when I say, I would love to meet new people and hear about what they do and discover. There's not a single day I don't learn anything, tech or non-tech. This weekend I learned something new and the feature has been in APEX for many years! (but that's for another blob post)
The level of presentation is very broad as well. We need presentations of all levels; beginners, intermediate and advanced.
"I don't know how to write an abstract"
On the internet there're many links how to present and write an abstract. On the ODTUG site you'll find some tips and examples.
Give it a go, you'll feel good when you've done it. Here's the link. It's all about the learning experience!
All the best and I look forward meeting you in Chicago.
Posted by Dimitri Gielis at 15:01
Tuesday, September 29, 2015
In 2008 I blogged about how to add Group Headings into an Interactive Report in Oracle Application Express (APEX 3.x!).
Here's an example what I mean with Group Headings, you want to logically group certain columns (e.g. Empno, Ename) and have a group name above them (e.g. Group 1):
The approach I used at that time worked, but it required a lot of manual work. In 2009 Martin D'Souza improved it and wrote a blog post about that. In 2010, when plugins were introduced in APEX 4, Martin wrapped it all in a nice APEX plugin which made adding Column Group Headings almost declarative. The plugin was further improved and put on GitHub.
Today, having APEX 5, and the Interactive Reports being changed a lot behind the scenes, the plugin was broken. As we're in the middle of restructuring how to share code, plugins etc., I forked Martin's git repo and made the plugin compatible with APEX 5 and Universal Theme (see version 1.0.4), so when you need it, you can grap it from the forked repo. At a later time the plugin will be moved to OraOpenSource, so depending when you read this post, check out OraOpenSource as Martin, I and many other developers will start putting our open source code on OraOpenSource.
Here's a quick how to use the plugin.
Step 1: Download the file dynamic_action_plugin_com_clarifit_apexplugin_ir_column_grouping.sql
Step 2: Import the plugin in your APEX application
Step 3: Define the Groups in the Interactive Report (you can right click on Column Groups in the Attributes of your Interactive Report and add the Groups you need):
Step 4: Assign the group to the columns of your report (you can multi select the columns and in the right pane you can select the group):
Important: define for every column that has a group defined, a static id equal to the name of the column (e.g. ENAME).
Step 5: Add the dynamic action plugin to the page
- Event: After Refresh
- Selection Type: Region
- IR Column Grouping [Plug-In]
That's it... note that when you scroll down and you have sticky headers, the group will stay with it.
Posted by Dimitri Gielis at 13:12
Sunday, September 27, 2015
In a comment on my post APEX 5.0: pimping the Login page I got a question how to put your own logo or a custom image on the login page, instead of an icon.
The result is this:
To differentiate the login page you can do a lot more, here're some things we show during our APEX UI training:
- add transparency to the login box
- add a background image to your entire page (blurred or not)
Posted by Dimitri Gielis at 23:15