Monday, February 09, 2015

JavaScript Stored Procedures and Node.js Applications with Oracle Database 12c

                                      Kuassi Mensah
                                    db360.blogspot.com | @kmensah | https://www.linkedin.com/in/kmensah

Introduction                                                            

Node.js and server-side JavaScript are hot and trendy; per the latest “RedMonk Programming Languages Rankings[1], JavaScript and Java are the top two programming languages. For most developers building modern Web, mobile, and cloud based applications, the ability to use the same language across all tiers (client, middle, and database) feels like Nirvana but the IT landscape is not a green field; enterprises have invested a lot in Java (or other platforms for that matter) therefore, the integration of JavaScript with it becomes imperative. WebSockets and RESTful services enable loose integration however, the advent of JavaScript engines on the JVM (Rhino, Nashorn, DynJS), and Node.js APIs on the JVM (Avatar.js, Nodyn, Trireme), make possible and very tempting to co-locate Java and Node applications on the same JVM.
This paper describes the steps for running JavaScript stored procedures[2] directly on the embedded JVM in Oracle database 12c and the steps for running Node.js applications on the JVM against Orace database 12c, using Avatar.js, JDBC and UCP.
          

JavaScript and the Evolution of Web Applications Architecture                                   

At the beginning, once upon a time, long time ago, JavaScript was a browser-only thing while business logic, back-end services and even presentations where handled/produced in middle-tiers using Java or other platforms and frameworks. Then JavaScript engines (Google’s V8, Rhino) leave the browsers and gave birth to server-side JavaScript frameworks and Node.js.

Node Programming Model

Node.js and similar frameworks bring ease of development rapid prototyping, event-driven, and non-blocking programming model[3] to JavaScript. This model is praised for its scalability and good enough performance however, unlike Java, Node lacks standardization in many areas such as database access i.e., JDBC equivalent, and may lead, without discipline, to the so called “callback hell[4]”.
Nonetheless, Node is popular and has a vibrant community and a large set of frameworks[5].

Node Impact on Web Applications Architecture

With the advent of Node, REST and Web Sockets, the architecture of Web applications has evolved into 
(i) plain JavaScript on browsers (mobiles, tablets, and desktops); 
(ii) server-side JavaScript modules (i.e., Node.js, ORM frameworks) interacting with Java business logic and databases.
The new proposal for Web applications architecture is the integration of Node.js and Java on the JVM.  Let’s discuss the enabling technologies: JavaScript engine on the JVM and Node API on the JVM and describe typical use cases with Oracle database 12c.  

JavaScript on the JVM

Why implement a JavaScript engine and run JavaScript on the JVM? For starters, i highly recommend Mark Swartz ‘s http://moduscreate.com/javascript-and-the-jvm/ and Steve Yegge’s  http://steve-yegge.blogspot.com/2008/06/rhinos-and-tigers.html blog posts. 

In summary, the JVM brings (i) portability; (ii) manageability; (iii) Java tools; (iv) Java libraries/technologies such as JDBC, Hadoop; and (v) the preservation of investments in Java. 

There are several implementations/projects of Java based JavaScript engines including Rhino, DynJS and Nashorn.

Rhino
First JavaScript engine entirely written in Java; started at NetScape in 1997 then, became an open-source Mozilla project[6]. Was for quite some time the default JavaScript engine in Java SE, now  replaced by Nashorn in Java SE 8. 

DynJS
DynJS is another open-source JavaScript engine for the JVM. Here is the project homepage http://dynjs.org/. 

Nashorn
Introduced in Java 7 but “production” in Java 8[7], the goal of project Nashorn (JEP 174), is to enhance the performance and security of the Rhino JavaScript engine on the JVM. It integrates with javax.script API (JSR 223) and allows seamless interaction between Java and JavaScript (i.e., invoking Nashorn from Java and invoking Java from Nashorn).

To illustrate the reach of Nashorn on the JVM and the interaction between Java and JavaScript, let’s run some JavaScript directly on the database-embedded JVM in Oracle database 12c. 

JavaScript Stored Procedures with Oracle database 12c Using Nashorn


Why would anyone run JavaScript in the database? For the same reasons you’d run Java in Oracle database. Then you might ask: why run Java in the database, in the first place? As discussed in my book[8], the primary motivations are: 
(i) reuse skills and code, i.e., which programming languages are your new hire knowledgeable of or willing to learn; 
(ii) avoid data shipping[9] i.e., in-place processing of billions of data/documents; 
(iii) combine SQL with foreign libraries to achieve new database capability thereby extending SQL and the reach of the RDBMS, e.g., Web Services callout, in-database container for Hadoop[10]
Some developers/architects prefer a tight separation between the RDBMS and applications therefore, no programming language in the database[11]but there are many pragmatic developers/architects who run code near data, whenever it is more efficient than shipping data to external infrastructure.

Co-locating functions with data on the same compute engine is shared by many programming models such as Hadoop. With the surge and prevalence of Cloud computing, RESTful service based architecture is the new norm. Data-bound services can be secured and protected by the REST infrastructure, running outside the RDBMS. Typical use case: a JavaScript stored procedures service would process millions/billions of JSON documents in the Oracle database and would return the result sets to the service invoker.

To conclude, running Java, JRuby, Python, JavaScript, Scala, or other programming language on the JVM in the database is a sound architectural choice. The best practices consist in: (i) partitioning applications into data-bound and compute-bound modules or services; (ii) data-bound services are good candidates for running in the database; (iii) understand Oracle database 
DEFINER INVOKER rights [12] and grant only the necessary privilege(s) and/or permission(s). 

The Steps

The following steps allow implementing JavaScipt stored procedure  running in Oracle database; these steps represent an enhancement from the ones presented at JavaOne and OOW 2014 -- which consisted in reading the JavaScript from the file system; such approach required granting extra privileges to the database schema for reading from RDBMS file system something not recommended from security perspective. Here is a safer approach:

1.      Nashorn is part of Java 8 but early editions can be built for Java 7; the embedded JavaVM in Oracle database 12c supports Java 6 (the default) or Java 7. For this proof of concept, install Oracle database 12c with Java SE 7 [13]
2.      Build a standard Nashorn.jar[14]; (ii) modify the Shell code to interpret the given script name as an OJVM resource; this consists mainly in invoking getResourceAsStream() on the current thread's context class loader ; (iii) rebuild Nashorn.jar with the modified Shell
3.  Load the modified Nashorn jar into an Oracle database shema e.g., HR
 loadjava -v -r -u hr/ nashorn.jar
4.      Create a new dbms_javascript  package for invoking Nashorn’s Shell with a script name as parameter
create or replace package dbms_javascript as
  procedure run(script varchar2);
end;
/
create or replace package body dbms_javascript as
  procedure run(script varchar2) as
  language java name 'com.oracle.nashorn.tools.Shell.main(java.lang.String[])';
end;
/

Then call dbms_javascript,run(‘myscript.js’) from SQL which will invoke Nashorn  Shell to execute the previously loaded myscript.js .
5.  Create a custom role, we will name it NASHORN, as follows, connected as SYSTEM
SQL> create role nashorn;
SQL> call dbms_java.grant_permission('NASHORN', 'SYS:java.lang.RuntimePermission', 'createClassLoader', '' );
SQL> call dbms_java.grant_permission('NASHORN', 'SYS:java.lang.RuntimePermission', 'getClassLoader', '' );
SQL> call dbms_java.grant_permission('NASHORN', 'SYS:java.util.logging.LoggingPermission', 'control', '' );
Best practice: insert those statements in a nash-role.sql file and run the script as SYSTEM
6.      Grant the NASHORN role created above to the HR schema as follows (connected as SYSTEM):

SQL> grant NASHORN to HR;

7.      Insert the following JavaScript code in a file e.g., database.js stored on your client machine’s (i.e., a machine from which you will invoke loadjava as explained in the next step).
This script illustrates using JavaScript and Java as it
uses the server-side JDBC driver to execute a PreparedStatement to retrieve the first and last names from the EMPLOYEES table.

var Driver = Packages.oracle.jdbc.OracleDriver;
var oracleDriver = new Driver();
var url = "jdbc:default:connection:";   // server-side JDBC driver
var query ="SELECT first_name, last_name from employees";
// Establish a JDBC connection
var connection = oracleDriver.defaultConnection();
// Prepare statement
var preparedStatement = connection.prepareStatement(query);
// execute Query
var resultSet = preparedStatement.executeQuery();
// display results
     while(resultSet.next()) {
     print(resultSet.getString(1) + "== " + resultSet.getString(2) + " " );
     }
// cleanup
resultSet.close();
preparedStatement.close();
connection.close();


8.      Load database.js in the database as a Java resource (not a vanilla class)
loadjava –v –r –u hr/ database.js

9.      To run the loaded script

sqlplus hr/
SQL>set serveroutput on
SQL>call dbms_java.set_output(80000)
SQL>call dbms_javascript.run(‘database.js’);

The Nashorn Shell reads ‘database.js’ script stored as Java Resource from internal table; the JavaScript in its turn invokes JDBC to execute a PreparedStatement and the result set is displayed on the console. The message “ORA=29515: exit called from Java code with status 0” is due to the invocation of java.lang.Runtime.exitInternal; and status 0 means normal exit (i.e., no error). The fix is to remove that call from Nashorn. 

Node.js on the JVM

As discussed earlier, Node.js is becoming the man-in-the-middle between Web applications front ends and back-end legacy components and since companies have invested a lot in Java, it is highly desirable to co-locate Node.js and Java components on the same JVM for better integration thereby eliminating the communication overhead. There are several projects re-implementing Node.js APIs on the JVM including: Avatar.js, Nodyn, and Trireme. This paper will only discuss Oracle’s Avatar.js.

Project Avatar.js[15]

The goal of project Avatar.js is to furnish “Node.js on the JVM”; in other words, an implementation of Node.js APIs, which runs on top of Nashorn and enables the co-location of Node.js programs and Java components. It has been outsourced by Oracle under GPL license[16]. Many Node frameworks and/or applications have been certified to run unchanged or slightly patched, on Avatar.js.

There are binary distributions for Oracle Enterprise Linux, Windows and MacOS (64-bits). These builds can be downloaded from https://maven.java.net/index.html#welcome. Search for avatar-js.jar and platform specific libavatar-js libraries (.dll, .so, dylib). Get the latest and rename the jar and the specific native libary accordingly. For example: on  Linux, rename the libary to avatar-js.so; on Windows, rename the dll to avatar-js.dll and add its location to your PATH (or use -Djava.library.path=).

RDBMSes in general and Oracle database in particular remain the most popular persistence engines and there are RDBMS specific Node drivers[17] as well as ORMs frameworks. However, as we will demonstrate in the following section, with Avatar.js, we can simply reuse existing Java APIs including JDBC and UCP for database access.

Node Programming with Oracle Database using Avatar.js, JDBC and UCP 

The goal of this proof of concept is to illustrate the co-location of a Node.js application, the Avatar.js library, the Oracle JDBC driver and the Oracle Universal Connection Pool (UCP) on the same Java 8 VM.
The sample application consists in a Node.js application which performs the following actions:
(i) Request a JDBC-Thin connection from the Java pool (UCP)
(ii)Create a PreparedStatement object for “SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES
(iii)Execute the statement and return the ResultSet in a callback
(iv)Retrieve the rows and display in browser on port 4000
(v) Perform all steps above in a non-blocking fashion – this is Node.js’s raison d’être. The demo also uses Apache ab load generator to simulate concurrent users running the same application in the same/single JVM instance.For the Node application to scale in the absence of asynchronous JDBC APIs, we need to turn synchronous calls into non-blocking ones and retrieve the result set via callback.

Turning Synchronous JDBC Calls into Non-Blocking Calls

We will use the following wrapper functions to turn any JDBC call into a non-blocking call i.e., put the JDBC call into a thread pool and free up the Node event loop thread.
var makeExecutecallback = function(userCallback) {
 return function(name, args){
      ...
      userCallback(undefined, args[1]);
  }
}
 function submit(task, callback, msg) {
    var handle = evtloop.acquire();
    try {    var ret = task();
               evtloop.post(new EventType(msg, callback, null, ret)); {catch{}
    evtloop.submit(r);
}

Let’s apply these wrapper functions to executeQuery JDBC call, to illustrate the concept
exports.connect = function(userCallback) {..} // JDBC and UCP settings
Statement.prototype.executeQuery = function(query, userCallback) {
         var statement = this._statement;
          var task = function() {
          return statement.executeQuery(query);
       }
     submit(task, makeExecutecallback(userCallback), "jdbc.executeQuery");
}
Similarly the same technique will be applied to other JDBC statement APIs.
Connection.prototype.getConnection = function() {…}
Connection.prototype.createStatement = function() {..}
Connection.prototype.prepareCall = function(storedprocedure) {..}
Statement.prototype.executeUpdate = function(query, userCallback) {..}

Returning Query ResultSet through a Callback

The application code fragment hereafter shows how: for every HTTP request: (i) a connection is requested, (ii) the PreparedStatement is executed, and (iii) the result set printed on port 4000.
   ...
   var ConnProvider = require('./connprovider').ConnProvider;
var connProvider = new ConnProvider(function(err, connection){.. });

var server = http.createServer(function(request, response) {
  connProvider.getConn(function(name,data){..});     
  connProvider.prepStat(function(resultset) {
                while (resultset.next()) {
                   response.write(resultset.getString(1) + " --" + resultset.getString(2));
                   response.write('
');
    }
    response.write('
');
    response.end();   
}
server.listen(4000, '127.0.0.1');

Using Apache AB, we were able to scale to hundreds of simultaneous invocations of the Node application. Each instance grabs a Java connection from The Universal Connection Pool (UCP), executes the SQL statements through JDBC then return the result set via a Callbak on port 4000.

Conclusions

As server-side JavaScript (typified by Node.js) gains in popularity it’ll have to integrate with existing components (COBOL is still alive!!). Developers, architects will have to look into co-locating JavaScript with Java, across middle and database tiers.






[1] http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
[2] I’ll discuss the rationale for running programming languages in the database, later in this paper.
[3] Request for I/O and resource intensive components run in separate process then invoke a Callback in the main/single Node  thread, when done.
[4] http://callbackhell.com/
[5] Search the web for “Node.js frameworks
[6] https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino
[7] Performance being one of the most important aspect
[8] http://www.amazon.com/exec/obidos/ASIN/1555583296
[9] Rule of thumb: when processing more than ~20-25% of target data, do it in-place, where data resides (i.e., function shipping).
[10] In-database Container for Hadoop is not available, as of this writing.
[11] Other than database’s specific procedural language, e.g.,  Oracle’s PL/SQL
[12] I discuss this in chapter 2 of my book; see also Oracle database docs.
[13] See Multiple JDK Support in http://docs.oracle.com/database/121/JJDEV/E50793-03.pdf
[14] Oracle does not furnish a public download of Nashorn.jar for Java 7; search “Nashorn.jar for Java 7”.
[15]  https://avatar-js.java.net/
[16] https://avatar-js.java.net/license.html
[17] The upcoming Oracle Node.js driver was presented at OOW 2014. 

220 comments:

1 – 200 of 220   Newer›   Newest»
Cassandra DB Developers said...

Its a nice blog posted by you. I was seeking for this type of blog that have a fresh and interesting Javascript and nodejs articles.

Dan McGhan said...

Nice post Kuassi! I'm finally interested in learning more about Nashorn! :)

Facebook Descargar said...

I love all the posts, I really enjoyed, I would like more information about this, because it is very nice., Thanks for sharing.
Signature:
download descargar facebook gratis para Android celular and download free descargar facebook apk en español, descargar facebook plus , descarga facebook

Whatsapp Descargar said...

Thanks for sharing. I hope it will be helpful for too many people that are searching for this topic.
Signature:
download free descargar whatsapp gratis and download baixar whatsapp gratis online and descargar whatsapp , baixar whatsapp

facebook entrar said...

Luckily there are good-hearted doctor to arrange for beautiful accommodation all know facebook entrar a mi perfil , facebook entrar a mi cuenta , facebook login entrar , go girl games , facebook entrar , facebook entrar , facebook entrar

iniciar sesion facebook entrar said...

Thanks for sharing this quality information with us. I really enjoyed reading.
Signature:
facebook entrar iniciar sesion gratis - Sitio Oficial iniciado sesión en Facebook lengua española. facebook entrar rápido, facebook iniciar sesion en tu cuenta de entrar facebook

games unblocked said...

Thanks for sharing. I hope it will be helpful for too many people that are searching for this topic.
Signature:
The place to play all unblocked games online. Here you can find every blocked games such as: unblockedgames , unblocked games happy , unblocked games 77 , gmod

Mít Trang said...

This is also a very good post which I really enjoyed reading. It is not everyday that I have the possibility to see something like this.
juegosjuegos.com
juegos de matar zombies
jogos do friv

John Alert said...

Useful & Great Article for NodeJS Development


Node.js Training
Node js Online Course
Node.js Essential Training
Node.js Online Training
Node.js Training in Chennai

Edward said...

It's a wonderful article about Javascript,..
angularjs

jhansi joe said...

Im no expert, but I believe you just made an excellent You certainly understand what youre speaking about, and I can truly get behind that.
Regards,
Node JS training|Node JS training in chennai

Divit said...







Thanks for the information. Hope devotes will be careful after reading this post.Regards


Cassandra Training in Chennai

Henry said...

Keep sharing more informative posts like that
AngularJs development companies

Friv4 said...

When you're tired, you want to relax after a stressful working hours, you need to have time to take care of the kids active.
Please visit our website and play exciting flash games.
Thanks you for sharing!
Friv 4

Richard said...

it's really a helpful post,.
javascript image editor

Node.JS developer said...

Thanks for sharing up–to-date on this subject! I find it is very informative and very well written one! Keep up on this quality!

Adlearning Technologies said...

Thank You for sharing your article. I like it. We provide TIBCO Online Training in Hyderabad.

Vamshi Krishna said...

very useful info, and please keep updating........
Best Online Software Training

Dwarakesh babu said...

I respect such vision /principle but there are many pragmatic developers and architects out there who
run programming languages code near data, when it is more efficient than shipping data to external
infrastructure. Co-locating functions with data on the same compute engine is shared by many
programming models such as Hadoop. Selenium Training in Bangalore

Python Training in Bangalore

Anonymous said...

nice blog

Inwizards Incorporation said...

very nice blogs!!! i have to learning for lot of information for this sites...Sharing for wonderful information about the web design and web development.Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing.
Hire Nodejs Developers
Nodejs Development Company

Omkarsoft Bangalore said...

Nice article
NodeJS Development Company

Unknown said...

Nice blog Python training in bangalore

Unknown said...

nice blog helpful to everyone python training in bangalore

Unknown said...

Great information. Thank you for sharing

Unknown said...

Very nice post. Awesome article... Really helpful

Gokul Ravi said...

very nice blog it was useful

Gokul Ravi said...

really awesome blog It was helpful

kokila zenrays said...

Thanks for sharing this information. Its useful detail about Nodejs. Nodejs Training in Bangalore

Satvik Patel said...

Thnks. very helpfully article. Website Development Services

Jagna Co Kalani said...

Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a Front end developer Node js Training in Chennai . learn from or Javascript Online Training from India. Nowadays JavaScript has tons of job opportunities on various vertical industry. JavaScript Training in Chennai

UnKnown said...

Nice Blog
datascience training in bangalore
powershell training in bangalore
gst training in bangalore
web designing training in bangalore

Mahesh Shiva said...


Thanks, Learned a lot of new things from your post! Good creation and HATS OFF to the creativity of your mind.
Very interesting and useful blog!
javascript Training in Gurgaon


Anonymous said...

Very nice blog...
Learn Node.js Training in Bangalore

Anonymous said...

It is very interesting to learn from to easy understood. Thank you for giving information. Please let us know and more information get post to link.
salesforce adm 201 online training

blackkutty said...

extremely pleasant web journals!!! I need to learning for part of data for this sites...Sharing for awesome data about the website composition and web development.Thanks for sharing this significant data to our vision. You have posted a trust commendable blog continue sharing.
Article Submission sites

vepambattu chandu said...

very nice information about NODE JS NODE JS FRAME WORK
THANK YOU

pavan said...

Thanks for sharing. I hope it will be helpful for too many people that are searching for this topic.

Mobile app development company Bangalore!
Android apps development companies in Bangalore!
iOS App development company Bangalore!

emma piterson said...

Interesting blog. It would be great if you can provide more details about it. Thank you

Node js Developer

Rohil singh said...

Wonderful article, very useful and well explanation. Your post is extremely incredible. I will refer this to my candidates...Digital Marketing Training in Mumbai

Anexas Europe said...

It’s great to come across a blog every once in a while that isn’t the same out of date rehashed material. Fantastic read.

Digital Marketing Training in Mumbai

Six Sigma Training in Dubai

Six Sigma Abu Dhabi

infotechbrn1@gmail.com said...

Great Information, Thank you for sharing this post.
iPhone training institute in bangalore
iphone job oriented course in bangalore

mahesh chemmala said...

Thank you for posting the valuable information.
NodeJS Online Training in Hyderabad

Rohil singh said...

Very nice post here and thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.
Good discussion. Thank you.
Anexas
Six Sigma Training in Abu Dhabi
Six Sigma Training in Dammam
Six Sigma Training in Riyadh

Rohil singh said...

Great post and informative blog.it was awesome to read, thanks for sharing this great content to my vision.
Good discussion.
PMP Training Course in Bangalore
PMP Training Course in Dammam
PMP Training Course in Dubai
PMP Training Course in Jeddah
PMP Training Course in Riyadh

Rohil singh said...

Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us. Do check Six Sigma Training in Bangalore | Six Sigma Training in Dubai & Get trained by an expert who will enrich you with the latest trends.

Rohil singh said...

Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us. Do check Six Sigma Training in Bangalore | Six Sigma Training in Dubai & Get trained by an expert who will enrich you with the latest trends.

Anonymous said...

Selenium is one of the most popular automated testing tool used to automate various types of applications. Selenium is a package of several testing tools designed in a way for to support and encourage automation testing of functional aspects of web-based applications and a wide range of browsers and platforms and for the same reason, it is referred to as a Suite.

Selenium Interview Questions and Answers
Javascript Interview Questions
Human Resource (HR) Interview Questions

Unknown said...

This is so amazing post, i really like your article. Thanks for it, keep sharing!
DevOps Online Training

Praylin S said...

This is what I was looking for! I've been following your blog for a while. I am greatly impressed by your work. You are taking so much effort and it makes your blog worth reading. Looking forward for more from you.
Javascript Training in Chennai | Javascript Training Center in Chennai | Javascript Training Courses | Javascript Training Institute in Chennai

Safety Professionals said...

But he’s trying none the less. I’ve been using Movable-type on several websites for about a year and am anxious about switching to another platform. I have heard great things about blogengine.net.
nebosh course in chennai

Augurs Technologies Pvt Ltd. said...

As a Node.JS development company, Augurs is offering an affordable Node.JS development service for web applications and web development across the world.

Sathyatech said...

Nice Blog

Thank you for sharing...

Software training courses in hyderabad | Sql server DBA course training courses in hyderabad

Digital Brolly said...

Informative blog

Very helpful

Brolly- Training and marketing services | Digital marketing course with internship

mounika said...

Nice post..

data science training in BTM

best data science courses in BTM

data science institute in BTM

data science certification BTM

data analytics training in BTM

data science training institute in BTM

mounika said...

Nice post..

python django training in BTM

python training centers in BTM

python scripting classes in BTM

python certification course in BTM

python training courses in BTM

python institutes in BTM

python training in btm

python course in btm

best python training institute in btm

sumathi s said...

It is really a great work and the way in which you are sharing the knowledge is excellent. Thanks for your informative article
offshore safety course in chennai

Swetha Gauri said...

Thank you so much for sharing this worth able content with us. The concept taken here will be useful for my future programs and I will surely implement them in my study. Keep blogging article like this
fire and safety course in chennai

Gayathri S said...

Nicely written. Thanks for sharing the useful blog about JavaScript Stored Procedures and Node.js Applications with Oracle Database 12c.

Web Application Development Company in Coimbatore

Xplore IT Corp said...

Hey Nice Blog!! Thanks For Sharing!!!Wonderful blog & good post.Its really helpful for me, waiting for a more new post. Keep Blogging!
Angular training in coimbatore
sql training in coimbatore

afiah ahamed said...

Wonderful bloggers like yourself who would positively reply encouraged me to be more open and engaging in commenting.So know it's helpful.
Java training in Chennai

Java training in Bangalore

lekha mathan said...

It was really an interesting blog, Thank you for providing unknown facts.
Aviation Academy in Chennai
Air hostess training in Chennai
Airport management courses in Chennai
Ground staff training in Chennai
Medical coding training in Chennai
Fashion designing courses in Chennai
Interior design courses in Chennai

Sam Daniel said...
This comment has been removed by the author.
sasitamil said...

I found your blog while searching for the updates, I am happy to be here. Very useful content and also easily understandable providing..
Believe me I did wrote an post about tutorials for beginners with reference of your blog. 




Selenium training in bangalore
Selenium training in Chennai
Selenium training in Bangalore
Selenium training in Pune
Selenium Online training

Anika Digital Media said...

Its Nice Blog with information and thanks for sharing your ideas.
Anika Digital Media

pavithra dass said...

Nice blog! I love it very much. All the info given by you are really superb. for my research. keep on posting your views.
Hadoop Training in Chennai
Big Data Training in Chennai
Angularjs Training in Chennai
Web Designing Course in chennai
PHP Training in Chennai
hadoop training in Velachery
hadoop training in Adyar

Manisha singh said...

Thanks for sharing this Informative content.

Javascript Training in Noida
Javascript Training institute in Noida

nivedhitha reddy said...

very nice article Leading data science training in ameerpet

Darshana M said...

A debt of gratitude is in order for one sublime posting! I delighted in understanding it; you are an incredible creator. I will make a point to bookmark your blog and may return sometime in the future. Very Nicely Written Article on Data Science Technology

Java Training | Java Training Institute | Java Training in Chennai | Java Training Institute in Chennai

Tableau Training | Tableau Course | Tableau Training in Chennai | Tableau Course in Chennai

service care said...

Thanks for posting useful information.You have provided an nice article, Thank you very much for this one. And i hope this will be useful for many people.. and i am waiting for your next post keep on updating these kinds of knowledgeable things...Really it was an awesome article...very interesting to read..please sharing like this information......
best mobile service center in chennai
best mobile service center in chennai
mobile service center in velacherry

vachu said...

Thanks for sharing this Informative content.
oracle training in chennai

sandeep saxena said...

Thanks for sharing this and I hope this post may help us to know how to solve it.
LoadRunner Training in Chennai
Loadrunner Training
Loadrunner Training in Velachery
Loadrunner Training in Adyar
QTP Training in Chennai
UFT Training in Chennai
LoadRunner Training in Chennai
Loadrunner course in Chennai

Aruna Ram said...


Your post is very neat and very decent. I am always like your post and your explanation is very nice. It's very good info and thanks to you!
Primavera Training in Chennai
Primavera Course in Chennai
Tableau Training in Chennai
Spark Training in Chennai
Power BI Training in Chennai
Excel Training in Chennai
Oracle Training in Chennai
Oracle DBA Training in Chennai
Social Media Marketing Courses in Chennai

vachu said...

It was really an interesting blog, Thank you for providing unknown facts.
Oracle training in Chennai

vachu said...

Keep sharing more informative posts like that
Oracle training in chennai

Vicky Ram said...

Thank you sharing this kind of noteworthy information. Nice Post.

imedicalassistants
Article submission sites

sandeep saxena said...

This information is quite useful, I truly enjoyed. Thanks for this blog.
core java training in chennai
core java course
C C++ Training in Chennai
C++ Training in Chennai
javascript course
javascript training institute in chennai
core java training
clinical sas training

Sharon Wood said...
This comment has been removed by the author.
SWETANK SINGH said...

Thank you for sharing such great information very useful to us.
Javascript Training in Delhi

gp007 said...
This comment has been removed by the author.
gp007 said...

Thanks for sharing this valuable information. Check on the below link if you are looking for best JAVA training in chennai.

Java Training In Chennai

sheela rajesh said...


Nice idea,keep sharing your ideas with us.i hope this information's will be helpful for the new learners.
Software Testing Training in Chennai
software testing course in chennai
JAVA Training in Chennai
Python Training in Chennai
Big data training in chennai
Selenium Training in Chennai
Software Testing Training in Chennai
Software testing training in OMR

Vicky Ram said...

I have read your blog its very attractive and impressive. I like it your blog.

businessexceltemplates
Article submission sites

vachu said...

very useful info, and please keep updating........
Oracle training in chennai

NIIT Noida said...


This is very nice information, Thank you so much for sharing your knowledge. Keep sharing!
Angular JS Training in Noida
Oracle Training Institutes in Noida

SRINIVAS B said...

Thanks for sharing information with us. If someone wants to know about web design and seo, I think this is the right place for you!
web design company in coimbatore
seo company in coimbatore

Dale Morris said...

Norton Antivirus Customer Service Number
McAfee contact number
Malwarebytes support telephone number
Hp printer support toll free number
Canon printer technical support phone number

nikitha josh said...

I have gone through your blog, it was very much useful for me and because of your blog, and also I gained many unknown information, the way you have clearly explained is really fantastic. Kindly post more like this, Thank You.
best aviation academy in Chennai
best air hostess training institute in Chennai
airline management courses in Chennai
airport ground staff training in Chennai
Aviation Academy in Chennai
air hostess training in Chennai
airport management courses in Chennai
ground staff training in Chennai

Sam Daniel said...
This comment has been removed by the author.
anirudh said...


Thank you for sharing the article. The data that you provided in the blog is informative and effective.

Best Devops Training Institute

BrnInfotech said...

Nice Information, your blog is sharing unique information....
Thanks for sharing!!!
Iphone training institute in hyderabad
best iphone training institute bangalore
Iphone training in hyderabad

nivedhitha said...

very nice and great blog with useful information Best python course in ameerpet

BrnInfotech said...

Useful Information, your blog is sharing unique information....
Thanks for sharing!!!
Iphone training institute in hyderabad
Mobile application training in hyd
Best iphone training in hyderabad
Iphone apps training in hyderabad

manisha said...


Thank you for sharing such great information very useful to us.
Web Designing Training in Noida

Augurs Technologies Pvt Ltd. said...

Python Web Development Company in Lucknow India,
Best Python Developers in Lucknow India,
Offshore Python Programmers in Lucknow India,
Hire Best PHP Developers in Lucknow India,
Professional PHP Agency in Lucknow India,

Sam Daniel said...

Wonderful Blog. Keep Posting.
Advanced Excel Training in Chennai
Corporate Excel Training in Mumbai
Advanced Excel Training in Bangalore
Power BI Training in Chennai
Corporate Tableau Training
Corproate Excel Training Delhi, Gurgaon, Noida

BrnInfotech said...


Thank you for your post. This is excellent information. It is amazing and wonderful to visit your blog.
iOS course fee in bangalore
iPhone training classes in bangalore
Mobile app training institutes bangalore
iPhone job oriented course in bangalore

origin clinic said...


Useful Information, your blog is sharing unique information....
Thanks for sharing!!!
Iphone training institute in hyderabad
Mobile application training in hyd
Best iphone training in hyderabad
Iphone apps training in hyderabad

Full Stack said...

Thanks for sharing the useful Information.
Full Stack Online Training

BrnInfotech said...

Useful Information, your blog is sharing unique information....
Thanks for sharing!!!
Mobile application training in hyd
Best iphone training in hyderabad
Iphone apps training in hyderabad

rajani said...

Thanks for sharing Very Use ful Blog..
Node JS Training in Hyderabad
Node JS Training
Node JS Online Training
Node JS Training in Ameerpet

Ramakrishna said...

Thank you for sharing more information and nice blog and it is very useful for me

Node JS Training
Node JS Online Training
Best Node JS Training in Ameerpet


Thank you..

Rainbow Training Institute said...

Thanks for providing a useful article containing valuable information. start learning the best online software courses.

Workday Online Training

GCP Online Training said...

Great Site, The Course were so simple and easy to understand.
GCP Training
Google Cloud Platform Training
GCP Online Training
Google Cloud Platform Training In Hyderabad

mani said...

Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.


website builder for reseller

mani said...

This is a very amazing post for cheap web hosting services. in this post, you have provided all the basic information regarding.

private label website builder

mani said...

This is genuinely an awesome read for me. I have bookmarked it and I am anticipating perusing new articles. Keep doing awesome!

white label website builder

lekha mathan said...

It was really an interesting blog, Thank you for providing unknown facts.
Aviation Academy in Chennai
Air hostess training in Chennai
Airport management courses in Chennai
Ground staff training in Chennai
Aviation Courses in Chennai
air hostess institute in Chennai
airline and airport management courses in Chennai
airport ground staff training courses in Chennai

Raj Sharma said...

Good Post. I like your blog. Thanks for Sharing
Oracle Training Noida

Manipriyan said...

Useful Information, your blog is sharing unique information
Thanks for sharing!!!




Python Training | Java Course in Chennai

priya rajesh said...

I gathered lots of information from your blog and it helped me a lot. Keep posting more.
GST Training in Chennai
GST Training classes in Chennai
GST Training institute in Chennai
ccna Training in Chennai
ReactJS Training in Chennai
PHP Training in Chennai
Salesforce Training in Chennai
ui ux design course in Chennai
GST Training in T Nagar

Hank Steve said...

HP Printer has made a mark globally due to its features and function and its support services. If ever you face any technical problem in the process of printing a document then no need to worry as you can rectify the issues by HP Printer Tech Support Number +1-870-345-4464 and experienced experts will handle the problem.
HP Printer Support Phone Number

DedicatedHosting4u said...

Hey, very nice site. I came across this on Google, and I am stoked that I did. I will definitely be coming back here more often. Wish I could add to the conversation and bring a bit more to the table, but am just taking in as much info as I can at the moment. Thanks .

DedicatedHosting4u.com

Malaivel Siddha Hospital said...

Wow, what an awesome spot to spend hours and hours! It's beautiful and I'm also surprised that you had it all to yourselves!
Kindly visit us @
Best HIV Treatment in India
Top HIV Hospital in India
HIV AIDS Treatment in Mumbai
HIV Specialist in Bangalore
HIV Positive Treatment in India
Medicine for AIDS in India
Cure best blood cancer treatment in Tamilnadu
HIV/AIDS Complete cure for siddha in Tamilnadu
HIV/AIDS Complete cure test result in Tamilnadu
AIDS cure 100% for siddha in Tamilnadu

Shanthi Cabs said...

The article is very interesting and very understood to be read, may be useful for the people. I wanted to thank you for this great read!! I definitely enjoyed every little bit of it. I have to bookmarked to check out new stuff on your post. Thanks for sharing the information keep updating, looking forward for more posts..
Kindly visit us @
Madurai Travels | Travels in Madurai
Best Travels in Madurai
Cabs in Madurai | Madurai Cabs
Tours and Travels in Madurai

KIT said...

Nice blog, it's so knowledgeable, informative, and good looking site. I appreciate your hard work. Good job. Thank you for this wonderful sharing with us. Keep Sharing.
Kindly visit us @ 100% Job Placement | Best Colleges for Computer Engineering
Biomedical Engineering Colleges in Coimbatore | Best Biotechnology Colleges in Tamilnadu
Biotechnology Colleges in Coimbatore | Biotechnology Courses in Coimbatore
Best MCA Colleges in Tamilnadu | Best MBA Colleges in Coimbatore
Engineering Courses in Tamilnadu | Engg Colleges in Coimbatore

Bangaloreweb guru said...

Thanks for share your valuable services.i recommend to you to go this website also.
Website Designing Company in Bangalore | Website Development Company in Bangalore | Website Designing Companies in Bangalore

Rainbow Training Institute said...

Hey Really Thanks for sharing the best information regarding Oracle, hope you will write more great blogs.

Workday Online Training

Rainbow Training Institute said...

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well.

Workday HCM Online Training

Sugantha Raja said...

This is very great thinks. It was very comprehensive post and powerful concept. Thanks for your sharing with us. Keep it up..
Oracle Training in Chennai | Oracle Training Institutes in Chennai

Apple Blossoms said...

Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is fantastic, let alone the content!

3D animation Company
Chatbot Development Company
Android app development in Coimbatore

shivani said...

An overwhelming web journal I visit this blog, it's unfathomably amazing. Unusually, in this present blog's substance made inspiration driving truth and reasonable. The substance of data is enlightening
Oracle Fusion Financials Online Training
Oracle Fusion HCM Online Training
Oracle Fusion SCM Online Training

Aruna Ram said...

I have read your wonderful post and it's very attractive and impressive. I like to add more different details from your great blog.
Pega Training in Chennai
Pega Training
Oracle Training in Chennai
Spark Training in Chennai
Oracle DBA Training in Chennai
Excel Training in Chennai
Embedded System Course Chennai
Tableau Training in Chennai
Linux Training in Chennai
Soft Skills Training in Chennai

nadiya said...

Interesting blog. Got a lotb of information about this technology.
pearson vue
french courses in chennai
Blockchain Training in Chennai
Ionic Training in Chennai 
Hadoop Admin Training in Chennai
best german classes in chennai
Best Informatica Training in Chennai

unknown said...

Hiii....Thanks for sharing Great information...Nice post....Keep move on....
Angular JS Training in Hyderabad

chandhran m said...

Excellent blog,I got more useful content from this blog...
Air Hostess Academy in Chennai
Air hostess Training Institute in Bangalore
Air Hostess Training Institute in Mumbai
Airport Management Courses in Bangalore
Airport Management Courses in Chennai
Air Hostess Academy in Chennai
Best Aviation Academy in Chennai
Aviation Training Institutes in Bangalore
Ground staff training in Bangalore
Ground Staff Training in Chennai

Chris Hemsworth said...

The article is so informative. This is more helpful for our
Best online software testing training course institute in chennai with placement
Best selenium testing online course training in chennai
Learn best software testing online certification course class in chennai with placement
Thanks for sharing.

allhelplinesupport3046 said...

You have been utilizing a few photograph sharing applications viz. Instagram, Pinterest, Tumblr, Snapchat and so forth. Flickr is as yet a main and an extremely prominent amazing picture sharing stage to be sure. yahoo support number

Google Adwords Management Service Company said...

Thanks for sharing an informative blog keep rocking bring more details.I like the helpful info you provide in your articles. I’ll bookmark your weblog and check again here regularly. I am quite sure I will learn much new stuff right here! Good luck for the next!
mobile application development training online
mobile app development course
mobile application development course
learn mobile application development
mobile app development training
app development training
mobile application development training
mobile app development course online
online mobile application development

ptiacademy said...

Our institute PTI Academy offers various computer course in Jaipur at an affordable price.

Our job-oriented courses are:
Graphics Design Course in Jaipur
Web Designing Course for Beginner
Web Development Classes in Jaipur
We also offer training and internship in various fields:
Android Training Institute in Jaipur
Top Digital Marketing Institutes in Jaipur
PHP Training Classes in Jaipur

adhi said...

thanks for your information really good and very nice web design company in velachery

Ramakrishna said...

Very good explanation sir. Thank you for sharing
NodeJs Online Training
NodeJs Training in Hyderabad

Google Cloud Platform Training said...

Thank you for sharing wonderful information with us to get some idea about it.
GCP Training
Google Cloud Platform Training
GCP Online Training
Google Cloud Platform Training In Hyderabad

Zinavo-Web Design | Web Development | SEO | Mobile Apps | ERP/CRM said...

Wonderful content with useful information. Thanks for sharing it with us. Website Designing Company in Bangalore | Web Design & Development Company in Bangalore | SEO Company in Bangalore | Magento 2 Website Development Bangalore

tech updates said...

This one is so informative

iot training in bangalore

shivam said...

Flying Shift - Packers & Movers in Bhopal

Tech Guy said...

Nice blog.
For best AWS training in bangalore, visit:
AWS training in bangalore

tech updates said...

visit here=> Best Devops Training in Bangalore

rutmanaish said...

Thanks for posting this information. Keep updating.
Spoken English Classes in Chennai
Spoken English in Chennai
German Classes in Chennai
Japanese Classes in Chennai
TOEFL Coaching in Chennai
Informatica Training in Chennai
Spoken English Classes in Adyar
Spoken English Classes in Velachery

venkatesh@CS said...

Excellent Blog. Thank you so much for sharing.
best react js training in Chennai
react js training in Chennai
react js workshop in Chennai
react js courses in Chennai
react js training institute in Chennai
reactjs training Chennai
react js online training
react js online training india
react js course content
react js training courses
react js course syllabus
react js training
react js certification in chennai
best react js training

Benish said...

Nice blog...Thanks for sharing useful information..
Python training in Chennai
Python training in OMR
Python training in Velachery
Python certification training in Chennai
Python training fees in Chennai
Python training with placement in Chennai
Python training in Chennai with Placement
Python course in Chennai
Python Certification course in Chennai
Python online training in Chennai
Python training in Chennai Quora
Best Python Training in Chennai
Best Python training in OMR
Best Python training in Velachery
Best Python course in Chennai

tech updates said...

VISIT HERE -> BIG DATA AND HADOOP TRAINING IN BANGALORE

tech updates said...

VISIT HERE -> BIG DATA AND HADOOP TRAINING IN BANGALORE

daizy mathew said...

Thanks for sharing this useful information
python training
php training

i Digital Academy said...

Nice blog and thank you for giving me a useful information.
Visit Us- I Digital Academy

Anonymous said...

Thanks for sharing such a great blog Keep posting.. 
Javascript Training in delhi

Ramakrishna said...

Thanks for sharing the valuable information.
NodeJs Online Training
NodeJs Training in Hyderabad
Best NodeJs Training in Hyderabad
NodeJs Training in Ameerpet

divi said...

It was really a wonderful article and I was really impressed by reading this blog.thanks for your information really good and very nice web design company in velachery

Updated Tech News said...

For Big data and Hadoop training in Bangalore
Visit:Big Data And Hadoop Training in Bangalore

Unknown said...

Pretty! This has been a really wonderful post. Many thanks for providing this information.

UI Development Training in Marathahalli

Full stack Development Training in Marthahalli Bangalore


UI Development Training in Bangalore


Angular Training in Bangalore

Unknown said...

Very good information. Lucky me I ran across your site by accident

Python Training in Marathahalli, Bangalore

Selenium Training in Marathahalli, Bangalore


Reactjs Training in Marathahalli, Bangalore

Buy Viagra online said...

Erectile dysfunction is a condition where a man is not able to get an erection. Even if they are able to get an erection, it does not last for too long. Suffering from erectile dysfunction can affect the person both physically and mentally. Therefore a person needs to take medical help to make the condition better. Also suffering from erectile dysfunction can affect the relation of the person with their partners. The medication that has brought about a wave of change in this field is the use of Viagra for erectile dysfunction. It works by targeting the basic cause of the issue thus helping millions of men all across the world. If you are a man who has been facing an issue with getting and maintaining an erection for a long time now, then you should
.Buy Viagra online

Ramakrishna said...

Very good explanation sir. Thank you for sharing
Node Js Training
Node Js Online Training
Node Js Training in Hyderabad
Node Js Training in Ameerpet

Pallavi said...

I learned World's Trending Technology from certified experts for free of cost. I Got a job in decent Top MNC Company with handsome 14 LPA salary, I have learned the World's Trending Technology from Python Training in pune experts who know advanced concepts which can help to solve any type of Real-time issues in the field of Python. Really worth trying Freelance seo expert in bangalore

virgoacp said...

Aluminium Composite Panel or ACP Sheet is used for building exteriors, interior applications, and signage. They are durable, easy to maintain & cost-effective with different colour variants.

gokul said...

Thanks for this informative blog
Top 5 Data science training in chennai
Data science training in chennai
Data science training in velachery
Data science training in OMR
Best Data science training in chennai
Data science training course content
Data science certification in chennai
Data science courses in chennai
Data science training institute in chennai
Data science online course
Data science with python training in chennai
Data science with R training in chennai

Updated Tech News said...

For IOT Training in Bangalore Visit:
IOT Training in Bangalore

Danishsingh said...

Thanks for sharing such a great blog Keep posting.
hr contacts database
hr contact database

Angular expert said...



I could not resist commenting. Perfectly written!


Python Training in Marathahalli, Bangalore

Selenium Training in Marathahalli, Bangalore


Reactjs Training in Marathahalli, Bangalore

Angular expert said...

This is a topic which is near to my heart... Cheers! Where are your contact details though?



UI Development Training in Bangalore


Angular Training in Bangalore

UI Development Training in Marathahalli

MEGAN FOX said...

Good Information keep going.

YouTube Marketing Company in Chennai

Unknown said...

Nice information.

Seo Company in Chennai

The India said...

iso 27001 certification services
iso 27001 certification cost
ISO 9001 Certification in Noida

The India said...

iso certification in noida
iso certification in delhi
ce certification in delhi
iso 14001 certification in delhi
iso 22000 certification cost
iso consultants in noida

The India said...

we have provide the best fridge repair service.
Washing Machine Repair In Faridabad
LG Washing Machine Repair In Faridabad
Videocon Washing Machine Repair In Faridabad
IFB Washing Machine Repair In Faridabad
Samsung Washing Machine Repair In Faridabad
Washing Machine Repair in Noida
godrej washing machine repair in noida
whirlpool Washing Machine Repair in Noida
IFB washing Machine Repair in Noida
LG Washing Machine Repair in Noida

The India said...

we have provide the best ppc service.
ppc company in gurgaon
website designing company in Gurgaon
PPC company in Noida
seo company in gurgaon
PPC company in Mumbai
PPC company in Chandigarh
Digital Marketing Company

The India said...

Rice Bags Manufacturers
Pouch Manufacturers
wall putty bag manufacturers
fertilizer bag manufacturers
seed bag manufacturers
gusseted bag manufacturers
bopp laminated bags manufacturer
Lyrics with music

Unknown said...

Nice post.

Smm company in Chennai

Unknown said...

Great Sound, you provided a valuable information.

wordpress ecommerce development company chennai

Buy Nuvigil online said...


Nuvigil smart drug is the trade name for Armodafinil smart drug and is the enantiopure compound of Modafinil. There are a number of health benefits that the use of Nuvigil smart drug has to offer to its users. So, you can buy Nuvigil online. The use of the smart drug is safe and has no health issues attached to its usage. In the year 2006, the FDA approved the use of generic Nuvigil smart drug to be used to treat a number of mental issues. Buy Nuvigil online as the use of Nuvigil smart drug has long effect when compared to other smart drugs. This is mainly because Armodafinil smart drug has a longer half-life than the other smart drugs. Therefore more and more people are depending on Nuvigil smart drug to carry on their daily routine smoothly.
Buy Nuvigil online

scarlett said...


Nice information keep sharing like this.

scaffolding dealers in chennai
Aluminium scaffolding dealers in chennai
Aluminium scaffolding hire

Chris Hemsworth said...

The article is so informative. This is more helpful for our
best software testing training in chennai
best software testing training institute in chennai with placement
software testing training
courses

software testing training and placement
software testing training online
software testing class
software testing classes in chennai
best software testing courses in chennai
automation testing courses in chennai
Thanks for sharing.

gautham said...

This is the awesome post
business analyst course

Kavya sri said...

Use Full Blog, Thanks for sharing.

Mean stack online training
Mean stack training in hyderabad

Naveen S said...

This is the first & best article to make me satisfied by presenting good content. I feel so happy and delighted. Thank you so much for this article.

Learn Best Digital Marketing Course in Chennai

Digital Marketing Course Training with Placement in Chennai

Best Big Data Course Training with Placement in Chennai

Big Data Analytics and Hadoop Course Training in Chennai

Best Data Science Course Training with Placement in Chennai

Data Science Online Certification Course Training in Chennai

Learn Best Android Development Course Training Institute in Chennai

Android Application Development Programming Course Training in Chennai

Learn Best AngularJS 4 Course Online Training and Placement Institute in Chennai

Learn Digital Marketing Course Training in Chennai

Digital Marketing Training with Placement Institute in Chennai

Learn Seo Course Training Institute in Chennai

Learn Social Media Marketing Training with Placement Institute in Chennai

Rajesh said...

Nice information, want to know about Selenium Training In Chennai
Selenium Training In Chennai
Data Science Training In Chennai
Protractor Training in Chennai
jmeter training in chennai
Rpa Training Chennai
Rpa Course Chennai
Selenium Training institute In Chennai
Python Training In Chennai

Rajesh said...

Rpa Training in Chennai
Rpa Course in Chennai
Blue prism training in Chennai

Rajesh said...

Data Science Training In Chennai
Data Science Course In Chennai
Data Science Course In Chennai

Venkatesh CS said...

Thanks for sharing valuable information.
Digital Marketing training Course in chennai
digital marketing training institute in chennai
digital marketing training in Chennai
digital marketing course in Chennai
digital marketing course training in omr
digital marketing certification in omr
digital marketing course training in velachery
digital marketing training center in chennai
digital marketing courses with placement in chennai
digital marketing certification in chennai
digital marketing institute in Chennai
digital marketing certification course in Chennai
digital marketing course training in Chennai
Digital Marketing course in Chennai with placement
digital marketing courses in chennai

hemanth said...

I would like to thank you for the efforts you had made for writing this wonderful piece of writing.
Cost of mobile app like byju's
Cost of app like Oyo
Cost to develop AIRBNB App

Web Design Company In Bangalore said...

I have read this article it is really helpful for getting amazing tips on a related topics. You have described everything in a professional way. Web Design And Development Company In Bangalore | Website Design Company In Bangalore | Website Design Company Bangalore | Web Design and
Development Bangalore

Vikram said...

Great Article.
Devops Training Institute in Hyderabad
Devops Training Institute in Ameerpet
Devops Online Training in Hyderabad
Devops Online Training in Ameerpet

Microservices Training in Hyderabad said...

Thanks for sharing useful information with us....
Microservices Online Training
Microservices Training in Hyderabad

unknown said...

Hiii...Thanks for sharing Great info...Nice post...Keep move on...
Blockchain Training in Hyderabad

Venkatesh CS said...

Thanks for sharing valuable information.
Digital Marketing training Course in Chennai
digital marketing training institute in Chennai
digital marketing training in Chennai
digital marketing course in Chennai
digital marketing course training in omr
digital marketing certification in omr
digital marketing course training in velachery
digital marketing training center in Chennai
digital marketing courses with placement in Chennai
digital marketing certification in Chennai
digital marketing institute in Chennai
digital marketing certification course in Chennai
digital marketing course training in Chennai
Digital Marketing course in Chennai with placement
digital marketing courses in Chennai

Digital Marketing said...

Excellent information, I like your post.

Best Android Application Development Company in kolkata

Best Web Development Company in kolkata

Best Software Development Company in Kolkata

meritstep Technology said...

Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
microservices online training

Microservices Online Training said...

This concept is a good way to enhance the knowledge.thanks for sharing..
Microservices Online Training
Microservices Training in Hyderabad

meritstep Technology said...


Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
angular js online training
best angular js online training
top angular js online training

meenati said...

Nice work, your blog is concept-oriented, kindly share more blogs like this
React js Online Training
Angular Training
NodeJS Online Training Hyderabad

Customer relationship management said...

This is really an awesome post, thanks for it. Keep adding more information to this.mulesoft training in bangalore

Customer relationship management said...

Really it was an awesome article,very interesting to read.You have provided an nice article,Thanks for sharing.salesforce developer training in bangalore

Customer relationship management said...

Being new to the blogging world I feel like there is still so much to learn. Your tips helped to clarify a few things for me as well as giving.salesforce admin training in bangalore

Customer relationship management said...

Linking is very useful thing.you have really helped lots of people who visit blog and provide them use full information.servicenow training in bangalore

Customer relationship management said...

Your articles really impressed for me,because of all information so nice.cloud computing training in bangalore

Asif Sarkar said...

Nice and very informative blog. This blog contains very helpful information thanks for sharing keep it up. seo services in kolkata | seo company in kolkata | seo service provider in kolkata | seo companies in kolkata | seo expert in kolkata | seo service in kolkata | seo company in india | best seo services in kolkata | digital marketing company in kolkata | website design company in kolkata

watson said...


This is amazing and really inspiring goal.hadoop training institutes in bangalore

watson said...

It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful .hadoop training institutes in bangalore

Rajesh said...

Rpa Training in Chennai
Rpa Course in Chennai
Rpa training institute in Chennai
Best Rpa Course in Chennai
uipath Training in Chennai
Blue prism training in Chennai

Data Science Training In Chennai
Data Science Course In Chennai
Data Science Training institute In Chennai
Best Data Science Training In Chennai

Rajesh said...

Nice infromation
Selenium Training In Chennai
Selenium course in chennai
Selenium Training
Selenium Training institute In Chennai
Best Selenium Training in chennai
Selenium Training In Chennai

«Oldest ‹Older   1 – 200 of 220   Newer› Newest»