Skip to main content

Posts

Showing posts from 2018

Make your Automatic Time Zone pretty

While the automatic time zone works, it looks bad. Often when the main page is heavy user needs to look on the white page for a while. APEX doesn't let you change this page natively. I have a nice MIP (Make It Pretty) for you. Check the results:

Try our sandbox demo to see the result!
Steps to implement the solution:
1) In "Application -> Shared Components -> Application Processes" create a process "On Load: Before Header" with this PL/SQL:
declare v_timezone varchar2(4000) := apex_util.get_session_time_zone(); begin -- if no timezone then go to error message if( v_timezone is null ) then raise_application_error(-20001, 'Get timezone'); end if; end;
2) Add this HTML to "Process Error Message"
<!-- All we do is in this container will be moved at the top of the page when page loads --> <div id="timezone-window-div"> <!-- I would suggest using JQUERY stored on your side, not from google, the link mi…

TWO-Factor Authentication with APEX application.

Two-factor authentication means that you must have two factors, to access your account. The first factor is something you know, like your login and password combination. The second is something you have, like a mobile device with a security app installed. That second factor — the mobile device with a security app — adds an extra layer of protection to your account. Even if hackers steal your password, they can’t log in, because they don't have your mobile device.



Try 2FA on our SANDBOX environment!
It is the most popular 2FA option based on Times-based One-Time Password (TOTP) alghoritm described in RFC 6238 and RFC 4226. TOTP is supported by Google Authenticator, Microsoft Authenticator, Authy 2-Factor Authentication and many other mobile apps. The most popular online services like Facebook, Google, Twitter use TOTP to protect user's accounts.

TOTP is a standard algorithm based on cryptographic hash method SHA-1. SHA-1 algorithm's implementation is available since Oracle 1…

ORACLE APEX with MySQL !

About 10 years ago I tried to build APEX application on MS SQLServer. It was possible but performance was not satisfactory. (You can read this post here)...
Today I will describe how to use APEX with MySQL. Obviusly I don't think it is good idea to build APEX app only on MySQL. It can be used as part of Hybryd solution (Oracle + MySQL or Postrgres).



My description covers integration with MySQL. As a result will be APEX application with Interactive Report and CRUD form based on MySQL data.
Description contains two parts: First part is a MySQL site, Second part is a APEX application part


Prerequisites:
Oracle 11g+APEX 18.1+MySQL/PostgresRestSQL
I. MySQL Part
1. MySQL contains simple apexdb database with one apexutil table.



2. To use this database install RestSQL. What is RestSQL? RestSQL is an open-source, ultra-lightweight data access layer for HTTP clients. RestSQL is a persistence framework or engine in the middle tier of a classic three tier architecture: client, application ser…

SQL query result as JavaScript array

Today there was a need of using simple, dictionary SQL query result as an array in JavaScript. Solution is quite simple - region with PL/SQL Dynamic Content.

Here you have a short video with example. Changing Select List causes showing Checkboxes in rows, on which specific action can be processed.


Code of PL/SQL region, which creates array:
htp.p('<script>'); htp.p('var actions = [];'); for x in (select ID, STATUS_FROM from ACTIONS ) loop htp.p('actions[' || x.id || '] = "' || x.status_from || '";'); end loop; htp.p('</script>');
JavaScript code for Dynamic Action, which uses the array:
$("input[name='f02']").each(function(){ if (this.getAttribute("status") == actions[$v("P18_ACTION")]) { this.style.display = "block"; } else { this.style.display = "none"; } });

Oracle APEX – Amazon ALEXA integration WITHOUT Amazon Lambda ! (PART 2)

In the last blog post I prepared Oracle side. In this post I will show, how to prepare ALEXA Skill and how to integrate all layers.

Few weeks ago Amazon implemented new version of Alexa Skill Kit. Alexa Skill Kit is like a APEX builder. Low code technology, so you don't need to write any code :)

Let's start ! Go to Amazon Developer Console

1. Click Get Started on Alexa Skills Kit


2. As you can see on screen below there is already one skill on my list. Click on Create Skill to Create new one.

3. The name of my Skill will be - APEXUTIL Pizza  :) but you can name it as you wish.


4. Select Custom

5. Create Invocation. Users say a skill's invocation name to begin an interaction with a particular custom skill. For example, if the invocation name is "apex pizza", users can say: "Alexa, ask apex pizza ...."

6. One skill can have one or more Intents. An intent represents an action that fulfills a user's spoken request. For demo I'll use only one Intent: &…

Oracle APEX – Amazon ALEXA integration WITHOUT Amazon Lambda ! (PART 1)

I found few examples how to integrate Amazon Alexa with Oracle. All solutions used Amazon Lambda microservice (node.js). But it’s not necessary. You need only two elements: Oracle with ORDS and Amazon Alexa Skill.



Prerequsites:
-Amazon account (https://developer.amazon.com/ )
-Oracle 11g +
-Oracle ORDS (accessed thru SSL)
-APEX (optionaly)

1. For demo I used only one simple table:
create table alexa_orders   (   alo_id      raw(16) default sys_guid() primary key,   alo_name    varchar2(4000),   alo_qty     number,   alo_value   number,   alo_date    date,   alo_status  varchar2(1024),   alo_ship_datedate  );
You can use these inserts to populate sample datas
insert into alexa_orders ( alo_name, alo_qty , alo_value , alo_date, alo_status, alo_ship_date) values ('Pizza Pepperoni', round(dbms_random.value(1,10),0), round(dbms_random.value(5,1000),2), sysdate-dbms_random.value(1,3),'In progress',sysdate+((1/1440)*dbms_random.value(1,120))); insert into alexa_orders ( …