Activity Not Available
I Use This!


Analyzed about 1 month ago. based on code collected about 1 month ago.
Posted 6 days ago
We're really pleased with the level of activity around the Oracle JET MOOC. Monday next week, when the 2nd week starts, we'll close registration, at which point we expect to have around 2,000 participants. The MOOC will run again, for free, in ... [More] October, after OpenWorld and JavaOne. We've picked up on some common problems on the Oracle JET forum and have put together some tips and tricks, as well as news and updates, here: <span id="XinhaEditingPostion"></span> We expect to release a similar YouTube clip part way through the 2nd and 3rd week of the course. [Less]
Posted 8 days ago
I was off on vacation with family for three weeks in August and came back to work to an impressive list of GCP (Google Cloud Platform) news and I thought I’d compile them here: Product Launches & Announcements Lots of GA announcements (Generally ... [More] Available, fully-supported): Cloud Shell is now GA, and still free. \o/ Cloud Datastore v1 API now GA. Full independence from App Engine if you want it! This release includes console enhancement, best practices, storage size calculation, clearer limits, and multi-tenancy guidance via namespaces. Also, it is now serving 15 trillion queries per month. Snapchat, Workiva and Khan Academy are among customers that can be named at this point. Google Cloud Bigtable is now GA. This is the fully-managed database service built on Google’s internal Bigtable service with Apache HBase client compatibility. It powers Google Search, Analytics, Maps, Gmail and more. Dataflow, Dataproc, Pub/Sub and BigQuery are all well integrated with Bigtable and Spotify, FIS and Energyworx are all using it already. Cloud SQL Second Generation is now GA. It offers MySQL 5.7, point-in-time-recovery (PITR), automatic storage re-sizing and failover replicas setup with a single click. It’s 7x faster and has 20x more storage capacity than its predecessor. See also the post for competitive benchmarks. Here are short videos on how to use Cloud SQL with App Engine and with Compute engine. Customer-Supplied Encryption Keys for Compute Engine goes GA. Get both control over data AND agility of the cloud. Now available in 14 countries. The Cloud team is also exploring some (relatively) new and important territory : “Making ASP.NET apps first-class citizens on Google Cloud Platform”. Showing Microsoft developers lots of love with Windows Server on GCE, ASP.NET image, SQL Server on GCE, Google services via NuGet, Cloud Tools for Visual Studio, Cloud Tools for PowerShell and ASP.NET Core support coming soon. Check out this short one-minute intro video. Some important product enhancements… … in Compute Engine : Preemptible VMs are now up to 33% cheaper. Read the article for some tips and tricks. VM instance sizing recommendations is now in Beta. Look for that “recommendation” column in your GCE instance dashboard to save and optimize your resources. Regional Managed Instance Groups is a new feature now available in Beta. GCE can now automatically spread new VMs across zones in the same region equally for better availability. Check out this short one-minute video. …in Dataflow : Enhanced Dataflow streaming pipelines management. At-least-once processing semantics with Drain. For all of you Pythonistas out there, support for Python on Cloud Dataflow is going beta. “Cloud Dataflow, Apache Beam, six months in“. Apache Beam code is now part of the Cloud Dataflow SDKs and you can “expect the SDK 2.x version-bump for Java to coincide with its first redistribution of Beam later this year”. Check out also this interview of Francis Perry on the Software Engineering Daily podcast. …in BigQuery: In-memory query execution in Google BigQuery. Shuffling petabytes in memory, faster is obviously better. Going back a little further, here’s an amazing recap of recent BigQuery updates. Great explanation and lots of resources. …in other GCP products: A new version of Cloud Datalab integrates with TensorFlow and allows to run locally. Local Datalab instances can still access BigQuery or Cloud Storage and a sample code for a machine learning model is included in the Datalab container. Mobile support for Stackdriver Error Reporting. Python 3 on App Engine flex is now in beta. This offers support for Python 3.4 and 2.7. Check out this one-minute video and read more on the Python developer hub. App Engine traffic splitting is an powerful yet very simple feature and there’s now documentation on how to leverage it right from your deployments. HTTP PATCH FTW. SSD Persistent Disks now offer 25,000 IOPS. Here’s what it means for your apps and how it compares to the competition.   GCP Podcast No vacation either for the GCP Podcast with two episodes on Kubernetes 1.3: Part I on what’s new in Kubernetes 1.3. Part II on GKE. The two most recent episodes were on SRE‘s (a fascinating conversation about how Google does operations) as well as an interview on the latest on PHP on GCP. Other Interesting GCP News and tidbits … in Machine Learning: TensorFlow in practice, a podcast interview with Rajat Monga. One of the key features of the Cloud Vision API is its SAFE_SEARCH_DETECTION. See how it can work for you (and for any site hosting user-generated content). Cloud Vision API powers Disney’s mobile website to find Elliot the Dragon in your surroundings! A really cool mobile web app too! Google uses DeepMind AI to cut data center energy bills. “Structuring unstructured text with the Google Cloud Natural Language API”. Fun with the Natural Language API, the Wikipedia API, AppEngine, Dataflow, and BigQuery. … in big data: Building WePay‘s Webhook delivery system with Google Cloud Pub/Sub. Problem to solve, implementation, and lessons learned. Analysing Docker projects on Github with BigQuery. What a customer 10TB dataflow pipeline looks like. … and on other general topics: Miles Ward, our Global Head of Solutions has couple of “run the same, everywhere” posts on why Cloud lock-in is bad and what we’re doing to keep our GCP customers away from it. Check out part I and part II. Hint: open source and community key ingredients. If you or your colleagues are seasoned AWS users, you’ll certainly find this updated “Google Cloud Platform for AWS Professionals” guide to be helpful. “OpenStack embraces Kubernetes to become a whole lot more like Google” “Orbitera joins the Google Cloud Platform team”  Filed under: Uncategorized [Less]
Posted 11 days ago
There are many map components in the world out there—and I have documented how to integrate several of them in an Oracle JET application, e.g., 3DCityDB, Mapbox, Leaflet, and LuciadRIA, as well as Oracle JET's ojThematicMap component.  However ... [More] , Oracle has its own map component, as described in detail below, which includes the Oracle Maps Javascript library: Oracle Fusion Middleware MapViewer is a development toolkit for incorporating interactive maps and spatial analyses. It is optimized for use with Oracle Spatial and Graph. (The related Oracle blog is Here below is how it looks when integrated into an Oracle JET application, with many thanks to my colleague Jayant Sharma, who made it happen and provided the instructions that follow, which I have successfully used and I can report that it works. Instructions for integrating Oracle Fusion Middleware MapViewer with Oracle JET, assuming you have set up an Oracle JET application, e.g., via the Oracle JET QuickStart Basic template: Add the Oracle Maps V2 kit into js/libs as a folder named 'oraclemaps'. The kit can be downloaded from here and specifically here: Modify "main.js" to include the various Oracle map libraries, in the requires.config "path" and "shim" sections. I.e., add these entries in the "paths" section: //File paths for Oracle Maps HTML5 API 'omapsv2-hammer': 'libs/oraclemaps/v2/jquery/jquery.hammer-full.min', 'omapsv2-i18n-properties': 'libs/oraclemaps/v2/jquery/', 'omapsv2-mousewheel.min': 'libs/oraclemaps/v2/jquery/jquery.mousewheel.min', 'omapsv2-rtree': 'libs/oraclemaps/v2/rtree/rtree-min', 'omapsv2-fortknox': 'libs/oraclemaps/v2/fortknox-libs/fortknox-canvas', 'omapsv2_core': 'libs/oraclemaps/v2/oraclemapsv2_core' ...and these in the "shim" section: //Oracle Maps HTML5 API dependencies 'omapsv2-i18n-properties': ['jquery'], 'omapsv2-hammer': ['jquery'], 'omapsv2-mousewheel.min' : ['jquery'], 'omapsv2_core': { deps: ['jquery','hammerjs','omapsv2-fortknox','omapsv2-rtree','omapsv2-hammer','omapsv2-i18n-properties','omapsv2-mousewheel.min'], exports: 'OM' } Modify the view of an Oracle JET module, e.g., "home.html", in the way it's done for the MapBox example, i.e., rewrite "home.html" to be the following and include "css/styles.css" containing "#map { width:100%; height:100%; }":  Modify the viewModel of an Oracle JET module, e.g., "home.js", to be as follows, and read the comments below to understand the code: define(['ojs/ojcore', 'knockout', 'omapsv2_core'], function (oj, ko) { function mainContentViewModel() { var self = this; self.handleAttached = function () { /* */ if (OM !== undefined) { //Where to load Oracle Maps HTML5 API resource files (fonts, css and icons et al): OM.gv.setResourcePath("js/libs/oraclemaps/v2"); //Default http method when fetching remote geospatial contents: OM.gv.setHttpMethod("GET"); } else console.log('OM not loaded'); var X = -77; var Y = 38.9; var initialZoom = 11; //This function adds various map controls to the provided OM.Map instance: var addMapControls = function (myMap) { //defines various properties for the navigation control: var navConfig = { orientation: 1, style: OM.control.NavigationPanelBar.STYLE_ZOOM_BUTTONS_ONLY, anchorPosition: 1 }; //creates the navigation control: var navigationControl = new OM.control.NavigationPanelBar(navConfig); // navigation control (and other map controls) are typically added //to the map as map decorations: myMap.addMapDecoration(navigationControl); //defines the basic properties for the map scale bars: var sbConfig = { format: "BOTH", anchorPosition: 4, endMarks: false }; //defines the display style of the scale bars: var sbStyle = { thickness: 5, color: '#257db3', shadow: true }; //creates the actual scale bar instance and sets the display style: var scaleBar = new OM.control.ScaleBar(sbConfig); scaleBar.setStyle(sbStyle); //adds the scale bar to the map as another map decoration: //myMap.addMapDecoration(scaleBar); }; var showMap = function () { //This is the DIV that will display the map; it needs to be passed into //the map instance: var mapDiv = document.getElementById('map'); if (!mapDiv) { console.log("Map container DIV not found!"); return; } //Creates a new map instance. Notice we are not supplying a Universe //like in helloworld.js, since the universe will be defined when we //add the tile layer to the map. Every tile layer includes its own //universe definition as part of the tile layer's configuration: var map = new OM.Map(mapDiv, {mapviewerURL: ''}); //This is how we create an Oracle eLocation tile layer: by creating //a new instance of the OM.layer.ElocationTileLayer class. Check //the API Doc for other built-in tile //layers such as Bing maps: var tileLayer = new OM.layer.ElocationTileLayer("elocation"); //Adds the tile layer to the map: map.addLayer(tileLayer); //creates a point object located at the given longitude and latitude: var point = new OM.geometry.Point(X, Y); //Adds various map controls to the map: //console.log('adding mapControls'); addMapControls(map); // set the initial map zoom level and center (same as the location marker): map.setMapCenter(point); map.setMapZoomLevel(initialZoom); //Now we can complete the initialization of the map. You must //only call this method once. Note however map layers can //be added even after calling this method: map.init(); }; //showMap // console.log('call showMap'); showMap(); /* */ }; // handleAttached } return new mainContentViewModel(); }); That's it. Run the project and you'll see the same as in the screenshot above. [Less]
Posted 11 days ago
The Oracle JET MOOC starts on Monday. When we talk about Oracle JET we always say that it solves "enterprise challenges". One of these is internationalization/localization/translation of JavaScript applications. Recently I started playing with the ... [More] translation features of Oracle JET and they're pretty impressive. Really, if you want to create JavaScript applications that need to be translated, you should look no further than Oracle JET. Let's start by looking at the result of a small sample I've been working on. Here's an application that can be switched to 4 different languages, with a screenshot of 3 of them below:  Everything to achieve the above is documented in "Internationalizing and Localizing Applications" in the Oracle JET Developer Guide. This topic is also dealt with in the 3rd week of the Oracle JET MOOC. There are several bits and pieces involved in this sample:  Bundled translations for Oracle JET components. Oracle JET components, such as the date/time picker that you see above, have already been translated. The translations are found in libs/oraclejet/dist/js/libs/oj/resources/nls. Custom translation bundles. Aside from the Oracle JET components, which have already been translated, Oracle JET provides a facility for storing and loading your own translations. Below, you can see a folder called "resources/nls", with subfolders for each of the languages I am supporting:In "main.js", I have this, which registers the "resources/nls/l10" structure and merges it with the translations that are provided by Oracle JET: config: { ojL10n: { merge: { 'ojtranslations/nls/ojtranslations': 'resources/nls/l10' } } } The most important file in "resources/nls" is the file named "l10.js", which could be named anything at all, so long as it matches the registration in "main.js" shown above. It looks like this, in my case: define({ "root": { "date": "Date:", "greeting": "Good Morning" }, "ar": true, "fr": true, "cs": true });In each of the folders that have been enabled above, i.e., "ar", "fr", and "cs", translations of the above texts are found, e.g., in "ar":Now, anywhere in our viewModel, we can use this statement to retrieve the greeting of the current locale: oj.Translations.getTranslatedString('greeting') RTL Support. Bidirectional features are included too, read here, simply by setting the "dir" attribute of the "html" element to "rtl" and back to "ltr". Dynamic Locale Switching. Via the buttons you see above, the locale can be switched, as described here. Following from the above, the complete code for the viewModel is as follows, focused on enabling the switching between locales, which will cause the translation bundles to be loaded dynamically: define(['ojs/ojcore', 'knockout', 'ojs/ojbutton', 'ojs/ojdatetimepicker'], function (oj, ko) { function mainContentViewModel() { var self = this; self.formats = ko.observableArray(["english"]); = ko.observable(); self.greeting = ko.observable("Good Morning"); self.localeDate = ko.observable(); self.localeDate(oj.Translations.getTranslatedString('date')); self.localeGreeting = ko.observable(); self.localeGreeting(oj.Translations.getTranslatedString('greeting')); self.setLang = function (data) { var newLang = ''; switch (data) { case 'Arabic': newLang = 'ar-EG'; self.formats(["arabic"]); break; case 'Czech': newLang = 'cs-CZ'; self.formats(["czech"]); break; case 'French': newLang = 'fr-FR'; self.formats(["french"]); break; default: newLang = 'en-US'; self.formats(["english"]); } oj.Config.setLocale(newLang, function () { $('html').attr('lang', newLang); if (newLang === 'ar-EG') { $('html').attr('dir', 'rtl'); } else { $('html').attr('dir', 'ltr'); } self.localeDate(oj.Translations.getTranslatedString('date')); self.localeGreeting(oj.Translations.getTranslatedString('greeting')); $('#dateInput').ojInputDateTime('refresh'); } ); }; } return new mainContentViewModel(); }); And here's the view: Arabic Czech French English That's it. And here's the sample code shown above: A next step is to generate all the buttons automatically from JavaScript, i.e., there should be some way to provide new buttons to switch to new languages easily, without having to code them in HTML, i.e., in the viewModel, find the lists of available translation locales and create the buttons, and their logic, based on that.  [Less]
Posted 12 days ago
On Sept. 9th 2016 the NetBeans Dream Team together with the Java User Group Cologne organize the first NetBeans Evening Cologne. From 6 pm till 9 pm you’ll get an evening full with latest information about NetBeans and Java. Meet the newest new ... [More] features in NetBeans IDE, see the NetBeans roadmap, learn about features related … Continue reading "NetBeans Evening Cologne" [Less]
Posted 13 days ago
A lot of work has gone into the preparation of something completely different—an enterprise JavaScript MOOC (massive open on-line course) via Oracle JET, which will start coming Monday, 22 August. Oracle JET is a set of best practices ... [More] , recommendations, architectures, templates, and components for enterprise JavaScript applications. There are over 1,000 subscribers to the MOOC so far. The MOOC will take 3 weeks of your time, the first week starting on Monday, 22 August. Each week is defined by one lesson, which is in 10 parts, each part consisting of a YouTube clip, each clip lasting no longer than about 10 minutes, together with self-study and homework assignments. Each of the two following weeks a new lesson will be made available. Each lesson ends with a quiz. Successful completion of all quizzes results in a certificate of completion.  Lesson 1, entitled "Taking Off with Oracle JET", takes you on a tour of the reasoning behind Oracle JET and an exploration of its underpinnings. By the end of that lesson, you're able to create Oracle JET applications. You'll have learned about Oracle JET modules, components, and layouts. You'll have a really great basis for creating enterprise JavaScript applications. Lesson 2, entitled "Exploring the Skies with Oracle JET", gives you a structured approach to learning from the Oracle JET Cookbook, which is filled with a range of enterprise components, e.g., graphs and tables, and shows you how to use them and integrate them into your Oracle JET applications. Lesson 3, entitled "Into the Clouds with Oracle JET", shows you how to integrate with the world around Oracle JET, i.e., 3rd party components, internationalization, accessibility, security, etc. Want to get a quick feel for how the MOOC will be? Part 1 (of 10 parts, which will be released next week) of the first lesson is already available: <span id="XinhaEditingPostion"></span> Sign up here! [Less]
Posted 14 days ago
Because the access to special areas of Alumni (an application described in my book “Web Development with Java and JSF”) shall be restricted to members only, we need to restrict the access to authorized persons only. During the registration process ... [More] , we ask the user to enter a password. This part is yet missing in the … Continue reading "Secure passwords" [Less]
Posted 15 days ago
Angular 2 replaces / generates a "synthetic" tag for each component without any styling with the name specified in the selector The component below: import { Component } from '@angular/core'; @Component({ selector: 'hello-app', template: ... [More] 'Styling the host component', }) export class AppComponent { } generates the following markup: Styling the host component Additional styling of the "host" tag can be added with the host object: import { Component } from '@angular/core'; @Component({ selector: 'hello-app', template: 'Styling the host component', host: {"class":"nice"} }) export class AppComponent { } which generates the following output: class="nice"> Styling the host component Putting the selector into angle brackets: selector: '[hello-app]' searches for an attribute, not a tag, with the name of the selector, e.g.: See you at Java EE Workshops at Munich Airport, Terminal 2 and particularly at Building Angular 2 Applications and Building React Applications. Real World Java EE Workshops [Airport Munich]> [Less]
Posted 17 days ago
What are your favorite NetBeans features? Damir Demirović from Serbia answers that question today in a new article on JAXenter. An extract: Read the article here:
Posted 19 days ago
Through the years, a recurring request by developers everywhere—not least among NetBeans users—is a facility for collaborative development. In a new article on JAXenter, I share info on two platforms for snippet sharing and how neatly they integrate ... [More] into NetBeans IDE. Some extracts:  The full article: [Less]