<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marek Sadowski</title>
    <description>The latest articles on DEV Community by Marek Sadowski (@blumareks).</description>
    <link>https://dev.to/blumareks</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F126043%2Fc2dd5bde-3994-4722-beef-eb64212256fc.jpeg</url>
      <title>DEV Community: Marek Sadowski</title>
      <link>https://dev.to/blumareks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blumareks"/>
    <language>en</language>
    <item>
      <title>Visual Recognition App with Node-RED</title>
      <dc:creator>Marek Sadowski</dc:creator>
      <pubDate>Sat, 01 Jun 2019 06:22:00 +0000</pubDate>
      <link>https://dev.to/ibmdeveloper/visual-recognition-app-with-node-red-28hc</link>
      <guid>https://dev.to/ibmdeveloper/visual-recognition-app-with-node-red-28hc</guid>
      <description>&lt;p&gt;This blog post demonstrates how one can make custom AI service engaged in one's solution effortlessly under 10 minutes, learn a new node-flow based code development with Node-Red.   &lt;/p&gt;

&lt;p&gt;To make it happen you will learn about Watson Visual Recognition (it is a seasoned - commercial - industry grade AI service available via IBM Cloud), Watson Studio for fast machine learning, Node-Red - the javascript based graphical node-flow language to use the created Visual Recognition classifier in the on-line mode.  &lt;/p&gt;

&lt;h4&gt;
  
  
  The why
&lt;/h4&gt;

&lt;p&gt;I am a full stack developer always looking for great technologies to utilize in modern systems. Since I founded a robotics startup I have been always amazed with the use of AI powered visual recognition services for drones and robots. In this blog post I am sharing with you how it is easy now to make AI doing stuff for you and your systems/robots/drones. Back 10 years ago I tried to use autonomous robots in a swarm to detect armed intruders - the task seemed to me impossible then to tackle it without huge financial resources. Today, the solution can be delivered after a day long hackathon. _Man, I wish I knew then what I am going to share with you now ;) _ &lt;/p&gt;

&lt;p&gt;In addition United Nations, Red Cross and IBM among other organizations support &lt;a href="http://callforcode.org/"&gt;CallForCode.org &lt;/a&gt;hackathon to help people affected by disasters. Using drones with image recognition might impact and improve well being of all those affected. I will show the code for detecting houses affected by wild fires, floods, etc. So why not take this call, contribute to the cause and help others!&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Watson Visual Recognition in Node-Red
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Watson Visual Recognition&lt;/strong&gt;  is the trained AI based service that can tell you what it sees on the picture with the pretrained classifiers. It can detect colors, people, faces, some objects, foods, etc. You are going to really like it. &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jj6wk4Xd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953811-screen-shot-2019-05-31-at-30801-pm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jj6wk4Xd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953811-screen-shot-2019-05-31-at-30801-pm.png" alt="node red" title="node red"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Node-Red&lt;/strong&gt;  is an open source project and &lt;em&gt;a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click (*repeating after the nodered.org site)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So let's start with IBM Visual Recognition - the last time I checked on May 30th 2019 - &lt;u&gt;you are able to call the service free of charge with a &lt;strong&gt;IBM Cloud lite account&lt;/strong&gt;&lt;/u&gt; about thousand times a month. And you can get yourself a free lite account (just providing your email) by simply clicking on my personalized link (if you use this URL, I will be told that this blog is a good one) : &lt;a href="https://ibm.biz/Bd2CUa"&gt;https://ibm.biz/Bd2CUa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just a side note - you can easily prepare a working Proof of Concept prototype for investors while just using the IBM Cloud Lite Account. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ljXUdzPq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953904-screen-shot-2019-05-31-at-65241-pm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ljXUdzPq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953904-screen-shot-2019-05-31-at-65241-pm.png" alt="IBM Cloud Lite account" title="IBM Cloud Lite account"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you sign up, log in and just open the Catalog and select from AI category the Watson Visual Recognition service, and create it. After that you need to also create the Node-RED Starter service. Both services would work in the free tier!&lt;/p&gt;

&lt;p&gt;When Node-RED service is provisioned, connect it with the previously created Watosn Visual Recognition service. You would need to restage the Node-RED service after you connect them together. When you set the service up for running you can create the first flows and use the following Node-RED lab: &lt;a href="https://github.com/watson-developer-cloud/node-red-labs/tree/master/basic_examples/visual_recognition"&gt;https://github.com/watson-developer-cloud/node-red-labs/tree/master/basic_examples/visual_recognition&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*a small hint: &lt;em&gt;at the bottom of the Node-RED lab page there is a link to a full JSON of the required Node-RED flow. Just copy the flow's JSON, import the JSON in the flow editor from the clipboard, and you would be good to start this service in matter of 1 minute! Do not forget to use "DEPLOY" button to install the new or changed flows.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your service will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G0m1CvEO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953909-reco-lab-visual-recognition-flow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G0m1CvEO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953909-reco-lab-visual-recognition-flow.png" alt="Image title"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can try your test service in your web browser thru this simple web application (just use the link with  &lt;strong&gt;/reco&lt;/strong&gt;  extension) - for example: &lt;a href="http://my-node-red-app.mybluemix.com"&gt;http://my-node-red-app.mybluemix.com&lt;/a&gt; &lt;strong&gt;/&lt;/strong&gt; &lt;em&gt;reco&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dKx7H8IZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953910-reco-lab-visual-recognition-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dKx7H8IZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953910-reco-lab-visual-recognition-screenshot.png" alt="Image title"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Customizing the AI service with the custom classifier
&lt;/h3&gt;

&lt;p&gt;If you want to add something new - create a custom classifier - you need to provide 1,000s of pictures for positive detection, and as I was told - about a half of this number with "negative" pictures - ie. pictures that do not represent the chosen classification.&lt;/p&gt;

&lt;p&gt;The very basic example would start to work with just dozen pictures. The perfect example is provided by John Walicki, who trained a custom classifier to detect burnt houses in the pictures taken by drones. You can use one of his labs to do such a drone classifier - the labs on creating a classifier to detect houses demolished by wild fires, or flooded are presented in this github based labs: &lt;a href="https://github.com/IBM/drones-iot-visual-recognition"&gt;https://github.com/IBM/drones-iot-visual-recognition&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I created a short video showing how it is being done step by step (yet the video is speeded up 2-3 times): &lt;a href="https://youtu.be/kW7cjuWuPS0"&gt;https://youtu.be/kW7cjuWuPS0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/kW7cjuWuPS0"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vD5noO-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dzone.com/storage/temp/11953943-screen-shot-2019-05-31-at-92551-pm.png" alt="Image title" title="Image title"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to train the Watson Visual Recognition you will  &lt;strong&gt;use IBM Watson Studio&lt;/strong&gt;. In order to recap what is required to train the Visual Recognition service is to provide individual pictures or group them together in the zip files - one for positive, and one with the  negative picture set. In the free tier you can get yourself 2 classifications like this. &lt;/p&gt;

&lt;p&gt;Now in oder to view it - just expand your existing Node-RED flow with an additional function node and fill it out with the following code more details are in the step 3 in the link here -&lt;a href="https://github.com/blumareks/ai-visrec-under-10min"&gt; https://github.com/blumareks/ai-visrec-under-10min&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;With the created custom classifier you are able to equip your drone, or software with the ability to detect survivors and victims of the disasters. The power of Watson Visual Recognition could be used for good, in the CallForCode.org hackathon and beyond that.&lt;/p&gt;

&lt;p&gt;What solution are you going to implement with it? Let me know!&lt;/p&gt;

&lt;p&gt;Follow me on Twitter &lt;a class="comment-mentioned-user" href="https://dev.to/blumareks"&gt;@blumareks&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ibmcloud</category>
      <category>jafascript</category>
      <category>nodered</category>
      <category>visualrecognition</category>
    </item>
    <item>
      <title>Monitor response times of cloud Java microservices with Databases for MongoDB</title>
      <dc:creator>Marek Sadowski</dc:creator>
      <pubDate>Thu, 21 Mar 2019 01:15:00 +0000</pubDate>
      <link>https://dev.to/ibmdeveloper/monitor-response-times-of-cloud-java-microservices-with-databases-for-mongodb-1ja8</link>
      <guid>https://dev.to/ibmdeveloper/monitor-response-times-of-cloud-java-microservices-with-databases-for-mongodb-1ja8</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F28uox4fgbwb6lyxrnhc4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F28uox4fgbwb6lyxrnhc4.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of my customers asked me to help them with a simple dashboard concept that would display series of availability and response times of the CRUD (Create, Read, Update, Delete) operations of the various data services exposed on the IBM Dedicated Cloud. By coincidence it also became a good example on how you can use CRUD operations on those data services accessed from a Java Open Liberty server on a local machine, as well as bound in the cloud, through the VCAP configuration file.&lt;/p&gt;

&lt;p&gt;This tutorial instructs you on how to check the response times of services hosted on IBM Cloud. This is a simple tool that can also show you how to do the basic CRUD operations in your Java application/microservice on strategic datasources like Cloudant, IBM Message Hub, MongoDB, Elastic Search, and more.  &lt;/p&gt;

&lt;p&gt;This particular how-to post is an example on using *&lt;em&gt;Databases for MongoDB *&lt;/em&gt; that is hosted and managed on IBM Cloud. The approach shown here is to generate a JSON response file with the report from accessing CRUD operations and provide the time needed to access each and every operation, in addition to the total operation time. The example of the response file you will try to create can be seen below.&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
    "service": "mongodb",&lt;br&gt;
    "operations": [{&lt;br&gt;
            "type": "create",&lt;br&gt;
            "response_time": 30,&lt;br&gt;
            "response_code": 200,&lt;br&gt;
            "desc": {&lt;br&gt;
                "visitor id": "594ddeee34a639002645674d"&lt;br&gt;
            }&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
            "type": "read",&lt;br&gt;
            "response_time": 25,&lt;br&gt;
            "response_code": 200,&lt;br&gt;
            "desc": {&lt;br&gt;
                "visitor id": "594ddeee34a639002645674d"&lt;br&gt;
            }&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
            "type": "update",&lt;br&gt;
            "response_time": 49,&lt;br&gt;
            "response_code": 200,&lt;br&gt;
            "desc": {&lt;br&gt;
                "visitor id": "594ddeee34a639002645674d"&lt;br&gt;
            }&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
            "type": "delete",&lt;br&gt;
            "response_time": 28,&lt;br&gt;
            "response_code": 200,&lt;br&gt;
            "desc": {&lt;br&gt;
                "deleted visitor id": "594ddeee34a639002645674d"&lt;br&gt;
            }&lt;br&gt;
        }&lt;br&gt;
    ],&lt;br&gt;
    "response_code": 200,&lt;br&gt;
    "desc": "operations implemented CRUD/CRUD"&lt;br&gt;
}&lt;/p&gt;
&lt;h2&gt;
  
  
  Learning objectives
&lt;/h2&gt;

&lt;p&gt;After completing this tutorial, the reader will know how to:&lt;/p&gt;

&lt;p&gt;* Track service response times&lt;br&gt;
* Run Java Open Liberty server locally and also in the cloud&lt;br&gt;
* Connect Java Open Liberty server to the exposed service&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you start you will need the following software on your machine:&lt;/p&gt;

&lt;p&gt;* &lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git&lt;/a&gt;&lt;br&gt;
* &lt;a href="https://docs.cloudfoundry.org/cf-cli/install-go-cli.html" rel="noopener noreferrer"&gt;Cloud Foundry CLI&lt;/a&gt;&lt;br&gt;
* &lt;a href="https://maven.apache.org/install.html" rel="noopener noreferrer"&gt;Maven&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll also need:&lt;/p&gt;

&lt;p&gt;* An IBM Cloud - &lt;a href="https://ibm.biz/Bd2CUa" rel="noopener noreferrer"&gt;cloud.ibm.com&lt;/a&gt; account (note that we'll be using non-lite tier services)&lt;br&gt;
* An IDE. In this example I use &lt;a href="https://marketplace.eclipse.org/content/ibm-eclipse-tools-ibm-cloud" rel="noopener noreferrer"&gt;Eclipse with IBM Cloud plugin&lt;/a&gt; to deploy the application to the cloud.&lt;/p&gt;
&lt;h2&gt;
  
  
  Estimated time
&lt;/h2&gt;

&lt;p&gt;Doing the entire lab takes about 20 minutes to 60 minutes for those who would set the environment up for the first time.  &lt;/p&gt;
&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 1. Clone the sample app
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Clone the &lt;a href="https://github.com/blumareks/BluemixTestDashboard" rel="noopener noreferrer"&gt;https://github.com/blumareks/BluemixTestDashboard&lt;/a&gt; GitHub repository.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/blumareks/BluemixTestDashboard" rel="noopener noreferrer"&gt;https://github.com/blumareks/BluemixTestDashboard&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Change the directory to where the sample app for MongoDB is located. In order to do it use the instructions below:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;cd BluemixTestDashboard/GetStartedJavaMongoDb&lt;/p&gt;

&lt;p&gt;That's good enough for now. We'll next provision a few resources on IBM Cloud and get back to the cloned repo.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2. Create the cloud services
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log in to the IBM &lt;a href="https://ibm.biz/Bd2CUa" rel="noopener noreferrer"&gt;cloud.ibm.com&lt;/a&gt; console.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search the \ &lt;em&gt;**Catalog&lt;/em&gt;* * for &lt;code&gt;**Databases for MongoDB**&lt;/code&gt; and &lt;strong&gt;`Liberty for Java&lt;/strong&gt; `.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/-IwbFQHzOnbk/XJLVuM0KTqI/AAAAAAAABa8/JS_nsmHlwg4rZ8NQta62TeQJbdtl5N9qACK4BGAYYCw/s1600/Screen%2BShot%2B2019-03-20%2Bat%2B1.56.51%2BPM.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F3.bp.blogspot.com%2F-IwbFQHzOnbk%2FXJLVuM0KTqI%2FAAAAAAAABa8%2FJS_nsmHlwg4rZ8NQta62TeQJbdtl5N9qACK4BGAYYCw%2Fs320%2FScreen%252BShot%252B2019-03-20%252Bat%252B1.56.51%252BPM.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/-An9OVQGk0MI/XJLYjMYuAII/AAAAAAAABbI/yQ3llvv8FRocQtpkDwpaX9Zwy3do0udigCK4BGAYYCw/s1600/java-1.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F3.bp.blogspot.com%2F-An9OVQGk0MI%2FXJLYjMYuAII%2FAAAAAAAABbI%2FyQ3llvv8FRocQtpkDwpaX9Zwy3do0udigCK4BGAYYCw%2Fs320%2Fjava-1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create both the &lt;code&gt;Liberty for Java&lt;/code&gt; sample app and the &lt;code&gt;Databases for MongoDB&lt;/code&gt; service.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once the two are created, bind the MongoDB service with the Liberty for Java app.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the *Connections* tab of the Liberty for Java service, and then click the *Create connection* button.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/-yBMM6y8xpOw/XJLZUuNyvgI/AAAAAAAABbc/9d7gtGujQVkJC3YicPLVbcNd6zN-R4dnACK4BGAYYCw/s1600/monodb-2.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-yBMM6y8xpOw%2FXJLZUuNyvgI%2FAAAAAAAABbc%2F9d7gtGujQVkJC3YicPLVbcNd6zN-R4dnACK4BGAYYCw%2Fs320%2Fmonodb-2.png"&gt;&lt;/a&gt;   &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the **Databases for MongoDB** service.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/-uTvzbe7LsKk/XJLnGMRfnqI/AAAAAAAABcw/c7Tcj3hI2B8ht_kQ-lmktTh2721bpgsMQCK4BGAYYCw/s1600/mongo-23.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F4.bp.blogspot.com%2F-uTvzbe7LsKk%2FXJLnGMRfnqI%2FAAAAAAAABcw%2Fc7Tcj3hI2B8ht_kQ-lmktTh2721bpgsMQCK4BGAYYCw%2Fs320%2Fmongo-23.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the *Connect* button.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/-YhdxiwZPiYk/XJLnJdKJZJI/AAAAAAAABc4/2AnoMAPXUiovCi292Kh-oXWpfK8RnYjVQCK4BGAYYCw/s1600/mongo-24.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F3.bp.blogspot.com%2F-YhdxiwZPiYk%2FXJLnJdKJZJI%2FAAAAAAAABc4%2F2AnoMAPXUiovCi292Kh-oXWpfK8RnYjVQCK4BGAYYCw%2Fs320%2Fmongo-24.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This action will initiate a restaging process of the Liberty for Java service.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3. Connect JVM system properties for TLS/SSL to Databases for MongoDB
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to the **Service Credentials** tab in the&lt;br&gt;
&lt;br&gt;
&lt;code&gt;Databases for MongoDB&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;From the menu, select **View Credentials**.&lt;/p&gt;

&lt;p&gt;The connection credentials from the VCAP file will look like this:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"connection": {&lt;br&gt;
"cli": {&lt;br&gt;
  "arguments": [&lt;br&gt;
    [&lt;br&gt;
      "-u",&lt;br&gt;
      "ibm_cloud_[characters removed]",&lt;br&gt;
      "-p",&lt;br&gt;
      "[characters removed]",&lt;br&gt;
      "--ssl",&lt;br&gt;
      "--sslCAFile",&lt;br&gt;
      "b226140c-3543-11e9-837a-ae06e730b715",&lt;br&gt;
      "--authenticationDatabase",&lt;br&gt;
      "admin",&lt;br&gt;
      "--host",&lt;br&gt;
      "replset/4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676,4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676"&lt;br&gt;
    ]&lt;br&gt;
  ],&lt;/p&gt;

&lt;p&gt;"bin": "mongo",&lt;br&gt;
  "certificate": {&lt;br&gt;
    "certificate_base64": "[characters removed]",&lt;br&gt;
    "name": "[characters removed]"&lt;br&gt;
  },&lt;br&gt;
  "composed": [&lt;br&gt;
    "mongo -u ibm_cloud_[characters removed] -p [characters removed] --ssl --sslCAFile b226140c-3543-11e9-837a-ae06e730b715 --authenticationDatabase admin --host replset/4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676,4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676"&lt;br&gt;
  ],&lt;br&gt;
  "environment": {},&lt;br&gt;
  "type": "cli"&lt;br&gt;
},&lt;br&gt;
"mongodb": {&lt;br&gt;
  "authentication": {&lt;br&gt;
    "method": "direct",&lt;br&gt;
    "password": "[characters removed]",&lt;br&gt;
    "username": "ibm_cloud_[characters removed]7"&lt;br&gt;
  },&lt;br&gt;
  "certificate": {&lt;br&gt;
    "certificate_base64": "[characters removed]",&lt;br&gt;
    "name": "b226140c-3543-11e9-837a-ae06e730b715"&lt;br&gt;
  },&lt;br&gt;
  "composed": [&lt;br&gt;
    "mongodb://ibm_cloud_[characters removed]:[characters removed]@4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676/ibmclouddb?authSource=admin",&lt;br&gt;
    "mongodb://ibm_cloud_[characters removed]:[characters removed]@4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676/ibmclouddb?authSource=admin"&lt;br&gt;
  ],&lt;br&gt;
  "hosts": [&lt;br&gt;
    {&lt;br&gt;
      "hostname": "4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud",&lt;br&gt;
      "port": 31676,&lt;br&gt;
      "protocol": "mongodb"&lt;br&gt;
    },&lt;br&gt;
    {&lt;br&gt;
      "hostname": "4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud",&lt;br&gt;
      "port": 31676,&lt;br&gt;
      "protocol": "mongodb"&lt;br&gt;
    }&lt;br&gt;
  ],&lt;br&gt;
  "path": "/ibmclouddb",&lt;br&gt;
  "query_options": {&lt;br&gt;
    "authSource": "admin"&lt;br&gt;
  },&lt;br&gt;
  "scheme": "mongodb",&lt;br&gt;
  "type": "uri"&lt;br&gt;
}&lt;br&gt;
},&lt;br&gt;
"instance_administration_api": {&lt;br&gt;
"deployment_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/[characters removed]:[characters removed]::",&lt;br&gt;
"instance_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/[characters removed]:[characters removed]::",&lt;br&gt;
"root": "&lt;a href="https://api.us-south.databases.cloud.ibm.com/v4/ibm" rel="noopener noreferrer"&gt;https://api.us-south.databases.cloud.ibm.com/v4/ibm&lt;/a&gt;"&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scroll down, and notice that the connection is SSL-enabled. If you do not have a credential file, create one using the defaults. Copy over the entire json. You will need the following parts:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;"certificate": {&lt;br&gt;
        "certificate_base64": "[characters removed]",&lt;br&gt;
        "name": "b226140c-3543-11e9-837a-ae06e730b715"&lt;br&gt;
      },&lt;/p&gt;

&lt;p&gt;URL: the first link from "composed": [&lt;br&gt;
      "composed": [&lt;br&gt;
        "mongodb://ibm_cloud_[characters removed]:[characters removed]@4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676/ibmclouddb?authSource=admin",&lt;br&gt;
        "mongodb://ibm_cloud_[characters removed]:[characters removed]@4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676/ibmclouddb?authSource=admin"&lt;br&gt;
      ],&lt;/p&gt;

&lt;p&gt;and from the same "composed" you can take the secondary URL (the second one from hosts)&lt;br&gt;
"hosts": [&lt;br&gt;
        {&lt;br&gt;
          "hostname": "4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud",&lt;br&gt;
          "port": 31676,&lt;br&gt;
          "protocol": "mongodb"&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
          "hostname": "4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud",&lt;br&gt;
          "port": 31676,&lt;br&gt;
          "protocol": "mongodb"&lt;br&gt;
        }&lt;br&gt;
      ],&lt;/p&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-VIDWhR9yn1M/XJLfcFcsP4I/AAAAAAAABbo/VhuBdKgMDhgUcYSE_tcf61zaR1dMTkoAACLcBGAs/s1600/mongo-5.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-VIDWhR9yn1M%2FXJLfcFcsP4I%2FAAAAAAAABbo%2FVhuBdKgMDhgUcYSE_tcf61zaR1dMTkoAACLcBGAs%2Fs320%2Fmongo-5.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll need to set several JVM system properties in our application to ensure that the client is able to validate the TLS/SSL certificate presented by the server:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  \* `javax.net.ssl.trustStore`: The path to a trust store containing the certificate of the signing authority.
  \* `javax.net.ssl.trustStorePassword`: The password to access this trust store.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Note that the trust store is typically created with the &lt;code&gt;keytool&lt;/code&gt; command-line program provided as part of the JDK. For example:&lt;/p&gt;

&lt;p&gt;keytool -importcert -trustcacerts -file   -keystore  -storepass &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go back to the **Databases for MongoDB** console and get the SSL certificate encoded_64 available on the **Credentials** page. You will need to **decode64 it**. I used &lt;a href="https://www.base64decode.org" rel="noopener noreferrer"&gt;https://www.base64decode.org&lt;/a&gt; service to do it. When you decode the copied certificate, then you can use it in the next step.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the SSL certificate in a file:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;cat &amp;gt; mongodbcert.crt&lt;/p&gt;

&lt;p&gt;The content should look like:&lt;/p&gt;

&lt;p&gt;-----BEGIN CERTIFICATE-----&lt;br&gt;
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0&lt;br&gt;
   [... removed couple lines ...]&lt;br&gt;
VSVElGSUNBVEUtLS0tLQo&lt;br&gt;
   -----END CERTIFICATE-----&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the &lt;code&gt;keytool&lt;/code&gt; command to create the MongoDB keystore for your system. Note that you may want to consider changing the password to something more appropriate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;keytool -importcert -trustcacerts -file ./mongodbcert.crt -keystore ./mongoKeyStore -storepass aftereight&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;When done, place the &lt;code&gt;mongoKeyStore&lt;/code&gt; in this path of your cloned repository: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GetStartedJavaMongoDb/src/main/resources/mongoKeyStore&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You might want to comment the lines for in the IBM Cloud connection, and switch it to a local store thru uncommenting the following lines in the file

&lt;code&gt;MongoDbVisitorStore.java&lt;/code&gt;

cloned from github in the following location:

&lt;code&gt;BluemixTestDashboard/GetStartedJavaMongoDb/src/main/java/wasdev/sample/store&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://4.bp.blogspot.com/-MVijvWsfF4U/XJLgV4ti64I/AAAAAAAABbw/WgkEYfh2OwUBtu9kRY7aBVJJruvCM2g6wCLcBGAs/s1600/javauncomment.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F4.bp.blogspot.com%2F-MVijvWsfF4U%2FXJLgV4ti64I%2FAAAAAAAABbw%2FWgkEYfh2OwUBtu9kRY7aBVJJruvCM2g6wCLcBGAs%2Fs320%2Fjavauncomment.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Furthermore for the local Liberty and MongoDB tests you want to define the MongoDB URL in the local file here: /BluemixTestDashboard/GetStartedJavaMongoDb/src/main/resources/mongo.properties . For that use the previously captured elements from json:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;URL&lt;/li&gt;
&lt;li&gt;Part of the host2;&lt;/li&gt;
&lt;li&gt;add

&lt;code&gt;&amp;amp;ssl=true&lt;/code&gt;

at the end of the URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It should look somehow like that:&lt;/p&gt;

&lt;p&gt;mongo_url=mongodb://ibm_cloud_[characters removed]:[characters removed]@4ffb04cb-473b-4895-879e-becf8fb4ac40-0.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676,4ffb04cb-473b-4895-879e-becf8fb4ac40-1.d7deeff0d58745aba57fa5c84685d5b4.databases.appdomain.cloud:31676/ibmclouddb?authSource=admin&amp;amp;ssl=true&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;From the project root directory, run Maven (ensure it's installed by running &lt;code&gt;mvn --version&lt;/code&gt;) in a terminal:
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;mvn install&lt;/p&gt;

&lt;p&gt;The document after the &lt;code&gt;mvn install&lt;/code&gt; is going to be locally stored at this location:&lt;/p&gt;

&lt;p&gt;/your-path-to-the-target/GetStartedJavaMongoDb/target/TestJavaMongo-1.0-SNAPSHOT/WEB-INF/classes/mongoKeyStore&lt;/p&gt;

&lt;p&gt;Or on IBM Cloud (after a &lt;code&gt;cf push&lt;/code&gt; command):&lt;/p&gt;

&lt;p&gt;/home/vcap/app/wlp/usr/servers/defaultServer/apps/myapp.war/WEB-INF/classes/mongoKeyStore&lt;/p&gt;

&lt;p&gt;A typical application will also need to set several JVM system properties to ensure that the client presents a TLS/SSL certificate to the MongoDB server:&lt;/p&gt;

&lt;p&gt;* &lt;code&gt;javax.net.ssl.keyStore&lt;/code&gt;: The path to a key store containing the client's TLS/SSL certificates.&lt;br&gt;
* &lt;code&gt;javax.net.ssl.keyStorePassword&lt;/code&gt;: The password to access this key store.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4. Running locally on Open Liberty with Databases for MongoDB in the IBM Cloud
&lt;/h3&gt;

&lt;p&gt;In order to test and run the service locally, you might need to install the JAXRS-2.0 feature on the local server. I am using Eclipse IDE for that purpose. The server configuration screen with added JAXRS-2.0 looks like the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://1.bp.blogspot.com/-PeEXwxeNOAw/XJLhIqPqHpI/AAAAAAAABb4/YkZOhGNCliA7yKorxL81YtSi1ZNK_K91QCLcBGAs/s1600/java-5.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-PeEXwxeNOAw%2FXJLhIqPqHpI%2FAAAAAAAABb4%2FYkZOhGNCliA7yKorxL81YtSi1ZNK_K91QCLcBGAs%2Fs640%2Fjava-5.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source of the local Liberty server managed by Eclipse IDE looks like this:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
    &amp;lt;!-- Enable features --&amp;gt;&lt;br&gt;
    &lt;br&gt;
        localConnector-1.0&lt;br&gt;
        servlet-3.1&lt;br&gt;
        jaxrs-2.0&lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;br&gt;
&lt;/p&gt;

&lt;p&gt;After building the project with the &lt;code&gt;mvn install&lt;/code&gt; command, you are able to run it on the above configured local server.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/-ncWW1jjBATU/XJLhaRuTwwI/AAAAAAAABcE/6qwWC4rzVYEUTDStJZ0sKn6K67I9P1l2ACK4BGAYYCw/s1600/java-6.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F1.bp.blogspot.com%2F-ncWW1jjBATU%2FXJLhaRuTwwI%2FAAAAAAAABcE%2F6qwWC4rzVYEUTDStJZ0sKn6K67I9P1l2ACK4BGAYYCw%2Fs640%2Fjava-6.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following image shows the results after calling the service locally:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://3.bp.blogspot.com/-U7W9Ugyhc08/XJLiMkVzFeI/AAAAAAAABcQ/3L4Y03bjUjsfz0_-05XDydnvxtKmAG6DwCLcBGAs/s1600/java-7.png" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F3.bp.blogspot.com%2F-U7W9Ugyhc08%2FXJLiMkVzFeI%2FAAAAAAAABcQ%2F3L4Y03bjUjsfz0_-05XDydnvxtKmAG6DwCLcBGAs%2Fs640%2Fjava-7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is a round-trip time of about five seconds for the first call (we needed to create the DB and run everything remotely), which is not very impressive. But the next step would show running the same service in IBM Cloud, and the response times will be at least 10x better. Below are my results, but please keep in mind that the following calls were faster because our services were already provisioned and a connection established.&lt;/p&gt;

&lt;p&gt;{&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"service": "mongodb",

"operations": [{

        "type": "create",

        "response\_time": 386,

        "response\_code": 200,

        "desc": {

            "visitor id": "5aec8faf17683ad076f4fc58"

        }

    },

    {

        "type": "read",

        "response\_time": 303,

        "response\_code": 200,

        "desc": {

            "visitor id": "5aec8faf17683ad076f4fc58"

        }

    },

    {

        "type": "update",

        "response\_time": 579,

        "response\_code": 200,

        "desc": {

            "visitor id": "5aec8faf17683ad076f4fc58"

        }

    },

    {

        "type": "delete",

        "response\_time": 164,

        "response\_code": 200,

        "desc": {

            "deleted visitor id": "5aec8faf17683ad076f4fc58"

        }

    }

],

"response\_code": 200,

"desc": "operations implemented CRUD/CRUD"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5. Running Open Liberty with Databases for MongoDB in the IBM Cloud
&lt;/h3&gt;

&lt;p&gt;There are at least two ways you can deploy and run this service in the cloud. You can either manually adjust the Cloud Foundry files and run it with the Cloud Foundry CLI, or use the IBM Cloud connector for Eclipse. In this tutorial, we use the Cloud Foundry CLI.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download CLI from IBM Cloud.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the Liberty service.&lt;/li&gt;
&lt;li&gt;Selecting the **Getting started** tab.&lt;/li&gt;
&lt;li&gt;Download the Command Line Interface:&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;As soon as the CLI is installed, you can run the version command:&lt;/p&gt;&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;ibmcloud --version&lt;br&gt;
  ibmcloud version 0.6.6+d4d59ab5-2018-03-20T07:49:59+00:00&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set your access point. (Note that the API access point depends on the cloud location in US, EU, AU, and so on.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ibmcloud api &lt;a href="https://api" rel="noopener noreferrer"&gt;https://api&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in to the service. (Note that if you are using a federated login, use &lt;code&gt;ibmcloud login -sso&lt;/code&gt; instead.)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ibmcloud login -u &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After you log in, you can interactively select the org and space to use.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ibmcloud target --cf&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Now edit the Cloud Foundry configuration file manifest.yml. The file should have the name of the application (your Liberty service) and the bound Databases for MongoDB service.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this example it looks like this:&lt;/p&gt;

&lt;p&gt;applications:&lt;br&gt;
    - name: &lt;br&gt;
      random-route: true&lt;br&gt;
      path: target/TestJavaMongo.war&lt;br&gt;
      memory: 256M&lt;br&gt;
      instances: 1&lt;br&gt;
      name: test-java-mongodb&lt;br&gt;
      host: test-java-mongodb&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Update the location of the MongoDB keystore in the cloud in the java class file: &lt;code&gt;MongoDbVisitorStore.java&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can now build the app for the cloud with Maven:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;mvn clean&lt;br&gt;
   mvn install&lt;/p&gt;

&lt;p&gt;After the &lt;code&gt;mvn&lt;/code&gt; commands complete without errors, you are ready to push your app to thr cloud. It will take a few minutes — just enough to get a cup of coffee. :-)&lt;/p&gt;

&lt;p&gt;ibmcloud app push &lt;/p&gt;

&lt;p&gt;Consider looking at the logs of the document — on the dashboard of the service (see the **Logs** tab), or use the CLI in the terminal:&lt;/p&gt;

&lt;p&gt;ibmcloud app logs &lt;/p&gt;

&lt;p&gt;But check this out - &lt;strong&gt;the CRUD operation in the IBM Cloud is 100x faster&lt;/strong&gt; than the first call, and 10x faster than the remote call from your local machine.&lt;/p&gt;

&lt;p&gt;{&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"service": "mongodb",

"operations": [{

        "type": "create",

        "response\_time": 12,

        "response\_code": 200,

        "desc": {

            "visitor id": "5aecb5b0705978002421614a"

        }

    },

    {

        "type": "read",

        "response\_time": 18,

        "response\_code": 200,

        "desc": {

            "visitor id": "5aecb5b0705978002421614a"

        }

    },

    {

        "type": "update",

        "response\_time": 11,

        "response\_code": 200,

        "desc": {

            "visitor id": "5aecb5b0705978002421614a"

        }

    },

    {

        "type": "delete",

        "response\_time": 8,

        "response\_code": 200,

        "desc": {

            "deleted visitor id": "5aecb5b0705978002421614a"

        }

    }

],

"response\_code": 200,

"desc": "operations implemented CRUD/CRUD"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I hope you enjoyed reading this tutorial! My next tutorial will be about adding an app to read, parse, and store the results. Stay tuned, and please follow me on Twitter &lt;a href="https://twitter.com/blumareks" rel="noopener noreferrer"&gt;@blumareks&lt;/a&gt; or on &lt;a href="https://medium.com/@blumareks/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; for more updates!&lt;/p&gt;

&lt;p&gt;This blog post was originally posted at &lt;a href="https://blumareks.blogspot.com/2019/03/monitor-response-times-of-cloud-java.html" rel="noopener noreferrer"&gt;https://blumareks.blogspot.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>databasesformongodb</category>
      <category>eclipse</category>
      <category>ibmcloud</category>
      <category>ibmcloudcli</category>
    </item>
    <item>
      <title>Serverless - from "Hello World" to exposing REST Api in under 10 minutes</title>
      <dc:creator>Marek Sadowski</dc:creator>
      <pubDate>Sun, 10 Mar 2019 20:21:49 +0000</pubDate>
      <link>https://dev.to/ibmdeveloper/serverless---from-hello-world-to-exposing-rest-api-in-under-10-minutes-2oc</link>
      <guid>https://dev.to/ibmdeveloper/serverless---from-hello-world-to-exposing-rest-api-in-under-10-minutes-2oc</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fg7m1nm2cfh2d2kfpuoek.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fg7m1nm2cfh2d2kfpuoek.png" alt="[]"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blumareks.blogspot.com/2019/03/serverless-from-hello-world-to-exposing.html" rel="noopener noreferrer"&gt;So you've been hearing a lot of buzz about Serverless tech, but what exactly is the serverless or cloud functions? Serverless has become the new style of coding, and it might be perfect to offload your mobile apps, and container based systems without incurring unnecessary costs. Read more here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloudfunctions</category>
      <category>openwhisk</category>
      <category>cloudnative</category>
    </item>
    <item>
      <title>Hack Raspberry Pi to tell you a joke</title>
      <dc:creator>Marek Sadowski</dc:creator>
      <pubDate>Tue, 05 Mar 2019 23:16:36 +0000</pubDate>
      <link>https://dev.to/blumareks/hack-raspberry-pi-to-tell-you-a-joke-39ci</link>
      <guid>https://dev.to/blumareks/hack-raspberry-pi-to-tell-you-a-joke-39ci</guid>
      <description>

&lt;p&gt;&lt;a href="https://blumareks.blogspot.com/2019/03/hack-raspberry-pi-to-tell-you-joke.html"&gt;This blog post is about enabling joking skill to the Raspberry Pi - now you can easily and fast build a basic "fun" skill and add it to your personal assistant. And this is the DIY personal assistant that is based on the basic IoT device - Raspberry Pi computer.&lt;/a&gt;&lt;/p&gt;


</description>
      <category>iot</category>
      <category>node</category>
      <category>ibmwatson</category>
      <category>chatbot</category>
    </item>
  </channel>
</rss>
