{"id":10027,"date":"2017-05-09T23:26:38","date_gmt":"2017-05-09T21:26:38","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/"},"modified":"2017-05-09T23:26:38","modified_gmt":"2017-05-09T21:26:38","slug":"apex-connect-2017-day-1","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/","title":{"rendered":"APEX Connect 2017 &#8211; Day 1"},"content":{"rendered":"<p>This year again the APEX connect conference spans over three days with mixed topics around APEX, like JavaScript, CSS, SQL and much more.<br \/>\nAfter the welcome speech and the Keynote about &#8220;Reconciling APEX and the Thick Database Paradigm&#8221; by Bryn Llewellyn I decided to attend presentations on following topics:<br \/>\n&#8211; Temporal Validity and Flashback Data Archive<br \/>\n&#8211; Universal Theme and Custom Themes in APEX 5.1<br \/>\n&#8211; Using REST Services in APEX applications the nice way<br \/>\n&#8211; Uncover the Truth (of APEX application)<br \/>\n&#8211; Browser Developer Tools for APEX developers<br \/>\n&#8211; Docker for Dummies<\/p>\n<p><strong>Thick Database Paradigm:<\/strong><br \/>\nWhat was highlighted by Bryn Llewellyn is that the key to proper Database development, is to encapsulate your database through PL\/SQL APIs.<br \/>\nWhen you work on DB development make your environment such as it can be easily rebuild from scratch with sripts so you have no fear in making anything wrong.<br \/>\nYour schema user should have as less rights as needed so you keep your environment safe.<br \/>\nIf you build proper APIs, no mater what kind of client application uses your data (APEX, REST, Java Web App, &#8230;), it will be able to interface.<\/p>\n<p><strong>Temporal Validity and Flashback Data Archive:<\/strong><br \/>\nThere is an increasing demand on data history and audit.<br \/>\nData history means not only keeping track of past data but also managing different versions of the same data over time (e.g. customer delivery address). This is managed by Temporal validity.<br \/>\nOracle 12c allows to automatically manage such time dependent data by using &#8220;ADD PERIOD FOR&#8221; on a table.<br \/>\nWhen retrieving the data use &#8220;AS OF PERIOD FOR&#8221; in the select statement.<br \/>\nDetails can be found on the Oracle website:<br \/>\n<a href=\"http:\/\/www.oracle.com\/webfolder\/technetwork\/tutorials\/obe\/db\/12c\/r1\/ilm\/temporal\/temporal.html\">Implementing temporal validity<\/a><br \/>\nAudit can be managed using the well known trigger business with all issues it can generate but also automatically by using flashback archive.<br \/>\nIn this second case data audit is written in a specified tablespace for which you define the data retention period. SYS_FBA tables get automatically created and information tracked is managed by setting context level. This is very powerful tool as it also takes in account DML changes.<br \/>\nAlso very important for audit purpose, flashback data cannot be modified.<br \/>\nYou can find further information on following Blog:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\">Oracle 12c Flashback Data Archive<\/a><\/p>\n<p><strong>Universal Theme and Custom Themes in APEX 5.1:<\/strong><br \/>\nAfter a brief overview of Theme and Templates history in APEX, we were shown how easy (at least it seems) it is to create and manage custom Theme and Templates.<br \/>\nTemplate options introduced in APEX 5 aim to reduce the number of templates for a specific &#8220;object&#8221; type to a minimum in order to ease maintenance.<br \/>\nLive template options have been introduced with APEX 5.1 to have a preview of the changes at run time and facilitate their usage.<br \/>\nTheme subscription allows to distribute changes made to a master Theme which can now be defined at workspace level.<br \/>\nTheme styles allow you to have a dedicated CSS file on top of you application standard CSS and define user based styles from the Theme roller.<br \/>\nNote: Themes based on JQuery Mobile for mobile applications should no longer be used, rather use the Universal Theme responsive as JQuery UI wasn&#8217;t updated for long and might have issues with the new JQuery core version that might be used in future versions of APEX.<\/p>\n<p><strong>Using REST Services in APEX applications the nice way:<\/strong><br \/>\nThe definition of REST is based on 3 pillars:<br \/>\n&#8211; Resources<br \/>\n&#8211; Methods (GET, PUT, POST, DELETE, PATCH)<br \/>\n&#8211; Representation (JSON, HTML, CSV, &#8230;)<br \/>\nThe new REST Client Assistant packaged application in APEX 5.1 will be on a great help for developer as it manages to generate the procedures required to parse JSON data returned by a given REST Data service URL as well as the underlying SQL query to display the data in report.<br \/>\nWhen the amount of data is becoming to large, REST data services can return them on a pagination fashion which needs to be supported on the client side. At this point only classic report can support that feature in APEX 5.1. Filtering on the data query to the service needs also to be managed. The REST Data Sample application is showing how to implement the different kind of interaction with REST Data services based on Oracle standards.<br \/>\nThere will be improvements in supporting REST Data service in the upcoming version 5.2 of APEX, such as remote SQL execution.<\/p>\n<p><strong>Uncover the Truth (of APEX application):<\/strong><br \/>\nWhen you have to modify an existing APEX application or take over from customer development you need to understand thee heart of the application which can be a challenge. To do so you need to identify it&#8217;s structure and how different elements are used and interact.<br \/>\nVarious people are interested in this:<br \/>\n&#8211; DB developers<br \/>\n&#8211; APEX developers<br \/>\n&#8211; Cloud developers<br \/>\n&#8211; Project leaders<br \/>\nThis is all about:<br \/>\n&#8211; Functionality (Page function, application logic, Interfaces)<br \/>\n&#8211; Complexity (APEX components, PL\/SQL objects, JavaScript, CSS, DB objects)<br \/>\n&#8211; Transparency (who changed, when, Conditions, relations between pages)<br \/>\nThere are already different tools in APEX allowing to see different aspects of those data:<br \/>\n&#8211; Searches<br \/>\n&#8211; History<br \/>\n&#8211; Application utilities<br \/>\n&#8211; Reports<br \/>\n&#8211; SQL Workshop<br \/>\nSo it can be cumbersome to walk through all those.<br \/>\nWe were presented a self developed toll which can be seen as a kind of &#8220;Dashboard&#8221; to analyze everything in one place base on all sorts of charts reading out the APEX metadata tables. I&#8217;m looking forward to seeing it released next summer.<\/p>\n<p><strong>Browser Developer Tools for APEX developers:<\/strong><br \/>\nThe IDE for APEX is the web browser, so it&#8217;s important to know about the developer tools provided in your web browser.<br \/>\nEach and every web browser has it&#8217;s own tools, some being better than others.<br \/>\nThe most used browser has also the most complete tool set: Chrome (Firefox Developer Edition is also worth looking at)<br \/>\nAs there are a lot of information to be displayed in the Developer tools, its highly recommended to detach the window from the browser to display it on a secondary screen when possible.<br \/>\nCSS usage is showing all level of the style Sheet to understand what is set where.<br \/>\nSpecifications of the web page can be modified on the fly to understand their impact.<br \/>\nDebugging of JavaScript can be done with setting breakpoints.<br \/>\nApplication panel allows to monitor cookies.<br \/>\nDevice mode allows to emulate mobile devices and even set the network speed to have a better understanding of end user experience.<br \/>\nEven remote debugging can be used on attached devices.<\/p>\n<p><strong>Docker for Dummies<\/strong><br \/>\nI already heard a lot about Docker but I never took some time to look into it, so I took the opportunity to have it shown today.<br \/>\nWhat is Docker? A light weight VM?<br \/>\nNo, a container!<br \/>\nIt allows to share resources and get ride of things like Hypervisor and full target OS (which are used for VMs), which makes it light.<br \/>\nMain characteristics are:<br \/>\n&#8211; You can put almost anything into it<br \/>\n&#8211; It stays locked<br \/>\n&#8211; It&#8217;s efficient for transport<br \/>\n&#8211; It&#8217;s small, light weight<br \/>\n&#8211; It&#8217;s scallable<br \/>\nActually it can be seen more as a software delivery platform.<br \/>\nThe basic component is an image:<br \/>\n&#8211; It contains File System and parameters<br \/>\n&#8211; It has no state<br \/>\n&#8211; Layers are read only<br \/>\n&#8211; Layers are shared<br \/>\n&#8211; Updates require only updated files to be downloaded<br \/>\nA container is a running instance of an image. It adds a R\/W layer on top of the image.<br \/>\nImages are not cloned.<br \/>\nPersistence of the data used in the container is managed by mapping local folder into the container.<br \/>\nAlso Docker is command line based, there is a GUI available called Kitematic.<br \/>\nResources:<br \/>\n<a href=\"https:\/\/www.docker.com\/\" \/>Docker website<\/a><br \/>\n<a href=\"https:\/\/kitematic.com\/\" \/>Kitematic website<\/a><br \/>\nYou can find further details on following blog:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-docker-1-overview-and-installation\/\" \/>Overview and installation<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This year again the APEX connect conference spans over three days with mixed topics around APEX, like JavaScript, CSS, SQL and much more. After the welcome speech and the Keynote about &#8220;Reconciling APEX and the Thick Database Paradigm&#8221; by Bryn Llewellyn I decided to attend presentations on following topics: &#8211; Temporal Validity and Flashback Data [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[368],"tags":[304,96,24,98],"type_dbi":[],"class_list":["post-10027","post","type-post","status-publish","format-standard","hentry","category-development-performance","tag-apex","tag-oracle","tag-pl-sql","tag-sql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>APEX Connect 2017 - Day 1 - dbi Blog<\/title>\n<meta name=\"description\" content=\"Blog about APEX Connect 2017 Day1, focused on Universal Theme, REST services and Docker\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"APEX Connect 2017 - Day 1\" \/>\n<meta property=\"og:description\" content=\"Blog about APEX Connect 2017 Day1, focused on Universal Theme, REST services and Docker\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-09T21:26:38+00:00\" \/>\n<meta name=\"author\" content=\"Alain Lacour\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alain Lacour\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\"},\"author\":{\"name\":\"Alain Lacour\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\"},\"headline\":\"APEX Connect 2017 &#8211; Day 1\",\"datePublished\":\"2017-05-09T21:26:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\"},\"wordCount\":1301,\"commentCount\":0,\"keywords\":[\"APEX\",\"Oracle\",\"PL\/SQL\",\"SQL\"],\"articleSection\":[\"Development &amp; Performance\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\",\"name\":\"APEX Connect 2017 - Day 1 - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-05-09T21:26:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\"},\"description\":\"Blog about APEX Connect 2017 Day1, focused on Universal Theme, REST services and Docker\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"APEX Connect 2017 &#8211; Day 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\",\"name\":\"Alain Lacour\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g\",\"caption\":\"Alain Lacour\"},\"description\":\"Alain Lacour has more than 15 years of experience in application development with Oracle technologies. He is specialized in APEX, Java, and PL\/SQL development. His expertise also includes middleware technologies such as Oracle Weblogic and EMC Documentum. He also has a broad experience in business analysis and architecture solutions as well as in service and project management. Prior to dbi services, Alain Lacour was Senior Consultant at IMS Health in Basel. He also worked as a Software Engineer for M&amp;H Informatics in Basel. Alain Lacour holds a Master of Science in Industrial Computing from the University of Mulhouse (F). His branch-related experience mainly covers the pharma industry, with an in-depth knowledge of the drug development process as well as drug distribution.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/alain-lacour\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"APEX Connect 2017 - Day 1 - dbi Blog","description":"Blog about APEX Connect 2017 Day1, focused on Universal Theme, REST services and Docker","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/","og_locale":"en_US","og_type":"article","og_title":"APEX Connect 2017 - Day 1","og_description":"Blog about APEX Connect 2017 Day1, focused on Universal Theme, REST services and Docker","og_url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/","og_site_name":"dbi Blog","article_published_time":"2017-05-09T21:26:38+00:00","author":"Alain Lacour","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alain Lacour","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/"},"author":{"name":"Alain Lacour","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"headline":"APEX Connect 2017 &#8211; Day 1","datePublished":"2017-05-09T21:26:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/"},"wordCount":1301,"commentCount":0,"keywords":["APEX","Oracle","PL\/SQL","SQL"],"articleSection":["Development &amp; Performance"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/","url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/","name":"APEX Connect 2017 - Day 1 - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-05-09T21:26:38+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"description":"Blog about APEX Connect 2017 Day1, focused on Universal Theme, REST services and Docker","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2017-day-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"APEX Connect 2017 &#8211; Day 1"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0","name":"Alain Lacour","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/455c4c7743e192ae868a6f9e6ed875415c5887567577eccbbbf2d65012cd976a?s=96&d=mm&r=g","caption":"Alain Lacour"},"description":"Alain Lacour has more than 15 years of experience in application development with Oracle technologies. He is specialized in APEX, Java, and PL\/SQL development. His expertise also includes middleware technologies such as Oracle Weblogic and EMC Documentum. He also has a broad experience in business analysis and architecture solutions as well as in service and project management. Prior to dbi services, Alain Lacour was Senior Consultant at IMS Health in Basel. He also worked as a Software Engineer for M&amp;H Informatics in Basel. Alain Lacour holds a Master of Science in Industrial Computing from the University of Mulhouse (F). His branch-related experience mainly covers the pharma industry, with an in-depth knowledge of the drug development process as well as drug distribution.","url":"https:\/\/www.dbi-services.com\/blog\/author\/alain-lacour\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=10027"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10027\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=10027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=10027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=10027"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=10027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}