To give this blog some context, I intend this blog to be an
insight into how I learn the different technologies I’ll be in contact with at
my business unit at Capgemini, ERP Cloud Solutions. As a degree apprentice developer
in the team the posts should have a technical focus and that’s about as specific
as I can be at this point. Fair to say I’m just as interested to see where this
goes as anyone else.
for building UI’s and with a couple of my team already well established in
using the technology this is where I started my journey….
How did using OJET benefit?
Oracle JET has been an excellent tool to get involved with and most of its strongest features have benefitted my own personal journey throughout. Firstly, the manner JET has selected its libraries (open source, reliable, stable AND widely known) has been exactly what I’ve needed at this point of my development. Along with this, the forums and community around the product are well maintained and you can expect a well-informed reply within a short period of time, another excellent resource I’ve been happy to draw upon. This without mentioning what I believe is the most useful tool for any potential UI developer who would want to use JET, the Cookbook (link below). The cookbook gives a huge number of ready-made components that’re fully customisable and available for use, these components found themselves inside some of my teams own custom built components too, so there’s no concern around a lack of flexibility.
The task at hand:
To begin with I formed part of a small team tasked with producing a ‘visitor sign in’ UI the type often seen in office receptions. After setting up OJET locally and using the navbar template, one of the four templates OJET has loaded, in order to make use of the routing, single page application features in the product we set about building the UI. It’s fair to say it was a learning curve. Firstly, I had to build up a familiarity with the libraries in use, particularly knockout JS.
I found this tutorial clear and concise and the multiple visits to the site to see what else I could use made it a good learning experience and aided my productivity.
Overall, I was reasonably happy with the finished product. The UI was simple in design and as a team we made reasonable progress given the short time frame given. What will be interesting is now I have the chance to revisit that project how many of the new features (and I’m beginning to see most UI’s have scope for expansion) added in the mean time will come to fruition as planned.
So whats next? Once the work on the Visitor sign in was completed I moved into a more complex UI which took full advantage of the previously mentioned cookbook: https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html In the next blog post i’ll talk about how the long list of data visualisations where put to good effect and the new set of skills I needed in order to capitalise on them.
Currently, there is no official Oracle tool for generating reports of a Cloud Tenancy. This can leave generating data around estates as a manual task open to human error. This acts as a tool to produce these reports.
Free open-source framework/tool to generate html output of your tenancy metadata. Can act as an audit or analysis tool of estate. It is also customizable to create custom reports which could be used as a method of creating customized reports for various stakeholders depending on security requirements etc. Further information here.
This being a learning blog, I can give a nod to the experience i’ve gained on both Oracle Cloud Infrastructure and Linux throughout the process of using this product.
I carried out the following on an Oracle Linux VM on OCI.
Once setup, I followed through the process, which is detailed accurately in the github documentation, and had my report.
Some interesting aspects of the setup included: – Creating a read only user with access to read across the whole tenency. – Setting the MAX_STRING_SIZE of the Database to extended. In my case it meant the reporting was kept in a seperate PDB so not to unintentionally affect other PDB’s.
The tool is expanding too, the latest feature being the ability to compare some aspects of the two latest consecutive reports.
My next challenge is to automate the process to take place at intervals. I’m currently writing some shell scripts in order to do so. That’ll be my next blog post.
OCI’s block volume option gives you a wide range of options when it comes to creating backup’s and restoring from them. It also gave me an excellent opportunity to learn about building, backing up and reattaching a restored block volume to a different instance – with a test included as proof.
The challenge: 1. Provision a VM and attach a block volume – running iSCSI commands to attach it. 2. Format the disk with two equal partitions 3. Make file system on one of these partitions 4. Mount the disk into a created directory 5. Edit the /etc/fstab folder 6. Spin up a seperate VM 7. Backup the block volume 8. Create a new block volume from the backup 9. Mount to the second VM 10. Confirm the backup is successfully attached through the test
How i’ll prove it: Simply – i’ll create multiple simple text files after part 5. Then once the backup is created in part 7 I’ll delete some selected files and will expect to see the full collection once the backed up block volume is attached to the second VM.
So what is Knockout? It’s one of the stable, reliable libraries and frameworks OJET utilises (discuss further in my first post) to provide a basis for UI development.
Take a look at the key concepts of JS below:
So, what can be achieved with knockout?
Dynamic, One-page applications primarily. With the potential for feature-rich development, given the range of examples on the cookbook there’s a lot to go at.
Here’s a particular favourite aspect of the code – the use of $root. prefix. Which allows knockout.js to search the entire viewmodel for an object matching your input rather than just that codeblock.
Things have changed for me personally since the last post I shared with you. Work focus has shifted due to a change in project and I know find myself working on a lift and shift to cloud project where i’m also writing some backend stuff.
(As an early preview the next post i’ll write will be around Data Obfuscation…)
Off the back of this I have been forunate to have my first exposure to linux and personally it’s brilliant. From my own personal journey into IT it has been a fascinating insight and I feel as though its opened a huge door that i’m ready to explore. What i’m writing about here is the Oracle Always Free instance of a linux machine i’ve spun up to act as a playground.
Following the link above, I put together my own instance. Some reading about the generating a putty-key and I was away to explore my way round a linux machine. More details below:
Highlights of my learning so far…
vi – vi, for those who don’t know, is a command you can execute that’ll allow you to edit a document within linux. Further to this, there’s another list of navigation commands through the keyboard setup for you to quickly manipulate the information in the file. Just copy and paste into text editor you say? It’s a quick to learn skill that’s rewarding to feel competent at.
pwd – moving over to navigating solely from the command line did take a few hours to get used to, but the best piece of advice I was given by a senior colleague was to check your present working directory – pwd.
These humble three key strokes have been crucial, you know where you’re operating from and have the security to write out your next command.
Finally, this is all well and good. But why would you learn to use linux machines? Personally, its captured my interest, but that isn’t enough for everyone. Take a look at these stats and you’ll struggle to argue that the knowledge gained on an OCI always free linux instance wont be a positive.
I plan to be back soon with some stuff around data masking and more OCI linux tales, probably a deeper dive into the learning of using Oracle on Linux….
So, after the previous posts around learning OJET as the junior role in an experienced team I’ve found myself with a less technically challenging task. However, it’s a task I need to find a solution for myself (an effective and stressful way to learn).
As mentioned previously, there is an internal project around a visitor management UI that i’m working on. It’s basic function is to manage visitors on a client site but it does have a twist, it will be paperless in order to be sustainable.
Before embarking on writing a line of code a UML document was needed, this was excellent from my perspective as it gave me an insight into producing a more rounded product and how clients expect use cases to be delivered. Additionally, during the process of writing out the UML it became clear that this process add values to the developers process, a clear, no waste diagram would make any future development more structured.
New Resources used over the past month…
So, going solo and writing UML’s might seem like a daunting challenge to those not well accustomed but in my opinion, the quality of resources at your disposal are key. To this end https://www.packtpub.com/ has been a huge source of high quality, in depth information.
So whats next?
Expect a more coding based update soon! I’ll be discussing some of the technical challenges and how my resources have helped my overcome them! Thanks for reading, get in touch if you’ve anything to add!
Picking up from where we last off, I promised some discussion around some of the more complex components in OJET. However, as you know i’m towards the beginning of my journey, especially with this tool, so some background work was required before diving into the ‘complex’ components the cookbook had to offer.
In terms of using the thematic map, some background knowledge of geoJSON was the first port of call. Getting my head around polygons and multi-polygons bore fruit later in the development process as we encountered an issue around placing markers on the map.
Next up was sunbursts. Just looking at the component you can see a lot is happening. The main issue was, how do we pass dynamic data from an API call into a component along these lines effectively? We had to look at the oj-event. To cut a long story short, we decided (and this was with help from more senior colleagues) to first log the event and have a look what was happening. From the long ream of information logged to the console we were able to pick out specific aspects of clicks on certain areas of the chart and have them pass information onto the next relevant step. A learning curve indeed.
That’s all for now, but i’ll update my progress again soon – this time revisiting an internal project that’s taken on a far greater, and interesting, scope.