{"id":12456,"date":"2019-05-09T16:20:46","date_gmt":"2019-05-09T14:20:46","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/"},"modified":"2019-05-09T16:20:46","modified_gmt":"2019-05-09T14:20:46","slug":"apex-connect-2019-day-3","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/","title":{"rendered":"APEX Connect 2019 &#8211; Day 3"},"content":{"rendered":"<p>For the last conference day, after the Keynote about &#8220;JavaScript, Why Should I Care?&#8221; by Dan McGhan , I decided to attend some JavaScript learning sessions to improve myself and presentations on following topics:<br \/>\n&#8211; How to hack your APEX App&#8230; (only for testing)<br \/>\n&#8211; What you need to know about APEX validations<\/p>\n<p>I also got the chance to have a 1:1 talk with Anthony Rayner to expose some wishes about APEX and talk about some issue on interactive grid search.<\/p>\n<h3>JavaScript programming language<\/h3>\n<p>Nowadays being an good APEX developer means being a full stack developer who master different areas:<br \/>\n&#8211; Server side (database, data modeling, SQL, PL\/SQL)<br \/>\n&#8211; Client side (HTML, CSS, JavaScript)<br \/>\nSo, even JavaScript was weird from the beginning you cannot avoid learning and mastering it. It&#8217;s simply the number 1 most used programming language (thanks to the web). Think APEX Dynamic Actions can solve all issues by hiding the complexity of Java Script just isn&#8217;t always possible anymore. Some statistics show that APEX team is already putting a lot of effort into JavaScript as it is more than 50% of APEX code way ahead from PL\/SQL.<br \/>\nA couple of characteristics about JavaScript:<br \/>\n&#8211; It&#8217;s a no variable type language, meaning that the type is not in the variable but rather in the value assigned to it. This can some how be seen as polymorphism.<br \/>\n&#8211; It&#8217;s case sensitive<br \/>\n&#8211; 0 based array index (PL\/SQL being a 1 based array index)<br \/>\n&#8211; There are no procedures, only functions<br \/>\n&#8211; Functions can be given other functions as parameter<br \/>\n&#8211; there is one convention: Functions starting with Uppercase are meant to be used with the new operator<br \/>\nWhile developing JavaScript your best friend are the web browser developer tools which allow to do a lot locally and test it before moving to the server and share with other developers and users.<br \/>\nThere are a lot of resources on the internet to support the copy\/paste way of work of JavaScript developers, so there are big chance that someone already did what you need. Just take care about licensing.<br \/>\nIn APEX JavaScript can be encapsulated in Dynamic Actions, but try to keep that code as short as possible.<br \/>\nOracle is also providing some very useful free Open Source Java development Toolkit: <a href=\"https:\/\/www.oracle.com\/webfolder\/technetwork\/jet\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">JET (Javascript Extension Toolkit)<\/a><br \/>\nIt&#8217;s already integrated in APEX thru the charts.<\/p>\n<h3>How to hack your APEX App&#8230; (only for testing)<\/h3>\n<p>APEX generating web application it&#8217;s exposed to the same dangers than any other web application like SQL injection, XSS (cross site scripting, aso).<br \/>\nThere is no excuse to ignore security issues because application is only used on the intranet or you think no one will ever find the issue&#8230;<\/b><br \/>\n&#8230; Security is the part of the job as a developer. Danger can come from the outside but also the inside with social engineering based hacking.<br \/>\nIt&#8217;s very easy to find hacker tools on the internet like Kali Linux, based on Debian, which provides more that 600 tools for penetration testing like for example BEEF (Browser exploitation Framework.<br \/>\nIn APEX the golden rule says &#8220;Don&#8217;t turn of escaping on your pages&#8221;.<br \/>\nDon&#8217;t forget &#8220;Security is hard. If it&#8217;s easy you&#8217;re not doing it right&#8221; so don&#8217;r forget it in your project planning.<\/p>\n<h3>What you need to know about APEX validations<\/h3>\n<p>There are 2 types of validations with web applications:<br \/>\n&#8211; Client side<br \/>\n&#8211; Server side<br \/>\nAPEX is making use of both and even sometimes combines them but server side is the most used.<br \/>\nWhere possible Client side validation should be used as well as it&#8217;s lighter (less network traffic), but be careful as it can be skirt with developer tools as it&#8217;s based on HTML attributes or JavaScript. Tht&#8217;s where Server side validation will be you second line of defense and the database triggers and constraints your very last line of defense.<br \/>\nValidation can make use of data patterns (regular expressions).<br \/>\nInteractive Grid validation can also be improved significantly with Java Script and Dynamic actions fired on value changes and\/or on page submission.<\/p>\n<p>There is always more to learn and thanks the community a lot of information is available. So keep sharing.<br \/>\nEnjoy APEX!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the last conference day, after the Keynote about &#8220;JavaScript, Why Should I Care?&#8221; by Dan McGhan , I decided to attend some JavaScript learning sessions to improve myself and presentations on following topics: &#8211; How to hack your APEX App&#8230; (only for testing) &#8211; What you need to know about APEX validations I also [&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":[197,229],"tags":[],"type_dbi":[],"class_list":["post-12456","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-database-administration-monitoring"],"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 2019 - Day 3 - dbi Blog<\/title>\n<meta name=\"description\" content=\"APEX Connect day 3 is about JavaScript as 2 years ago. It is more than 50% of the code in APEX. Mastering it is a requirement to be a good APEX developer.\" \/>\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-2019-day-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"APEX Connect 2019 - Day 3\" \/>\n<meta property=\"og:description\" content=\"APEX Connect day 3 is about JavaScript as 2 years ago. It is more than 50% of the code in APEX. Mastering it is a requirement to be a good APEX developer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-09T14:20:46+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=\"3 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-2019-day-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/\"},\"author\":{\"name\":\"Alain Lacour\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\"},\"headline\":\"APEX Connect 2019 &#8211; Day 3\",\"datePublished\":\"2019-05-09T14:20:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/\"},\"wordCount\":709,\"commentCount\":0,\"articleSection\":[\"Application integration &amp; Middleware\",\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/\",\"name\":\"APEX Connect 2019 - Day 3 - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2019-05-09T14:20:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0\"},\"description\":\"APEX Connect day 3 is about JavaScript as 2 years ago. It is more than 50% of the code in APEX. Mastering it is a requirement to be a good APEX developer.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"APEX Connect 2019 &#8211; Day 3\"}]},{\"@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 2019 - Day 3 - dbi Blog","description":"APEX Connect day 3 is about JavaScript as 2 years ago. It is more than 50% of the code in APEX. Mastering it is a requirement to be a good APEX developer.","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-2019-day-3\/","og_locale":"en_US","og_type":"article","og_title":"APEX Connect 2019 - Day 3","og_description":"APEX Connect day 3 is about JavaScript as 2 years ago. It is more than 50% of the code in APEX. Mastering it is a requirement to be a good APEX developer.","og_url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/","og_site_name":"dbi Blog","article_published_time":"2019-05-09T14:20:46+00:00","author":"Alain Lacour","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alain Lacour","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/"},"author":{"name":"Alain Lacour","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"headline":"APEX Connect 2019 &#8211; Day 3","datePublished":"2019-05-09T14:20:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/"},"wordCount":709,"commentCount":0,"articleSection":["Application integration &amp; Middleware","Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/","url":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/","name":"APEX Connect 2019 - Day 3 - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2019-05-09T14:20:46+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/acabba2b6ca473b44b098c2de61294b0"},"description":"APEX Connect day 3 is about JavaScript as 2 years ago. It is more than 50% of the code in APEX. Mastering it is a requirement to be a good APEX developer.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/apex-connect-2019-day-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"APEX Connect 2019 &#8211; Day 3"}]},{"@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\/12456","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=12456"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12456\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12456"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}