Monthly Archives: November 2016


What Is ElasticSearch


Elastic is an open-source search engine built on top of Apache Lucene, a complete text search engine library. Lucene is plausibly the most advanced, high performance, and perfectly featured search engine library in existence today.

Lucene is just a library. To leverage its power a user, need to work in Java and has to integrate Lucene directly with the user’s application.

Elasticsearch is also written in Java and uses Lucene internally for its indexing and searching, but its main aim is to make full-text search easily by hiding the difficulties of Lucene behind a simple, coherent, and RESTful API.

Elasticsearch is much more than just Lucene. It can also be described as follows.

  • A distributed real-time document is stored where every field is indexed and searchable.
  • It is a distributed search engine with real-time analytics.
  • Elasticsearch is capable of scaling hundreds of servers and petabytes of structured and unstructured data.
  • Elasticsearch can also be used as a replacement of document stores like MongoDB and RavenDB.
  • Elasticsearch is one of the most popular enterprise search engine which is currently being used by many organizations such as Wikipedia, The Guardian, StakOverflow GitHub and much more.


Node: Node refers to a single running instance of Elasticsearch. Single physical and virtual server accommodate multiple nodes depending upon the capabilities of their physical resources such as RAM, storage, and processing power.

Cluster: It is an assembly of one or more number of nodes. The cluster provides collective indexing and search capabilities across all the nodes for complete data.

Index: Index is a collection of different type of documents and document properties.

Mapping: It is a collection of documents which shares common fields present in the same index

Replicas: Elasticsearch allows the user to create replicas of their own indexes and shards. Replication not only increases the availability of data but also in the case of failure, it also improves the performance of searching by carrying out a parallel search operation in these replicas.


  • Elasticsearch is developed in Java, which makes it compatible with almost every platform.
  • Elasticsearch is real time.
  • Elasticsearch is distributed, which makes it easy to scale and integrate into any organization.
  • In Elasticsearch, creating back-ups are easy by using the concept of gateway
  • Elasticsearch supports almost every document type except those that do not support text rendering.


  • Elasticsearch does not contain multi-language support in terms of handling request and response data, unlike Apache Solr.
  • Elasticsearch also have a complication of split-brain situations in some rare cases.


Elasticsearch is both simple and a complex product. In this article, we have learned what is Elasticsearch and the major advantages and disadvantages. We hope, this article has given you a better understanding and more importantly, inspired you to further experiment with the rest of its great features!


Microsoft Azure Hdinsight upgrades


The HDInsight service is a type of implementation of Hadoop that runs on the Microsoft Azure platform. HDInsight is completely compatible with Apache Hadoop because it is built on the Hortonworks Data Platform (HDP).

Microsoft implements Hadoop as a service as it has several advantages:

  • A user can quickly deploy the system from a portal or through Windows PowerShell
  • scripting, without having to create any physical or virtual machines.
  • A user can implement a small or large number of nodes in a cluster.
  • The HDInsight service works with input-output technologies from Microsoft or other vendors.
  • The user only pays for what they use.


Microsoft Azure is a cloud service provided by Microsoft. One of the services offered is HDInsight, an Apache Hadoop-based distribution which runs in the cloud on Azure.

Creating an HDInsight cluster is brisk and easy. Log-on to Azure, select the number of nodes, name the cluster, and set permissions. The cluster will be available on demand, and once the job is completed, the cluster can be deleted but the data will remain in Azure storage. Having the data securely stored in the cloud before, after, and during the process gives HDInsight an edge compared with other types of Hadoop deployments.


Microsoft has announced a number of updates to Azure HDInsight that makes Hadoop enterprise ready in the cloud. Azure HDInsight is Hadoop and Spark cloud services from Microsoft. It is now offering the security capabilities for cloud Hadoop solution, Big Data query and speeds the approach of data warehousing performance, and new notebook experiences for data scientists in the latest Hortonworks Data Platform 2.5 and Spark 2.0 platform.

Advanced security features: New security features such as authentication and encryption for data protection will give the user an increased level of security for authentication, authorization, and encryption.

According to Microsoft, LLAP (Live, Long and Process) allows the data to stay in a constricted format while running in-memory to deliver a better performance boost for Big Data queries.

New features in Azure HDInsight includes integration with Azure active directory, which is Microsoft cloud hosted directory and identity management service.

Azure HDInsight also supports Apache Kafka and works with Spark and Apache storm to give a solution for a large and fast stream of data which is ideal for a wide variety of IoT scenarios.

Microsoft also collaborated with Simba to deliver an ODBC driver for Azure HDInsight which can be used for world-class BI tools such as Power BI, Tableau, and QlikView. Also, it allows the business analysts to gain insights over a Big Data using their own choice of tool.



Features of Ecmascript6

EcmaScript is the standardized scripting language that JavaScript implements. JavaScript is one of the most essential languages in existence today. Every browser has a JavaScript interpreter. JavaScript on the server is becoming more popular, and now we are able to use JavaScript for desktop (Chrome Apps), native mobile (PhoneGap) and native Windows 8 apps.

EcmaScript6 you’ve probably heard about it. It is the next version of JavaScript and it has some great new features. These features are varying degrees of complexities and are useful in both simple scripts and complex applications. In this article, we are going to discuss the major features of ES6 that you can use in your everyday JavaScript coding.


Scoping in JavaScript is a bit confusing for the developers with C,C#, and Java background. In ES5, variables are either globally or locally scoped. The lack of block scoping has caused confusion in ES5 and resulted in some of the interesting patterns to achieve block scope. In ES6 a user can use let keyword to achieve block scoping.

var num = 0; //globally scoped

for (let i = 0; i < 10; i++) { //i is block scoped

num += i;

console.log(‘value of i in block: ‘ + i);


console.log(‘Is i defined here?: ‘ + (typeof i !== ‘undefined’)); //Is i defined here?: false


There is another way to declare block-scoped variables. With const, a user can declare a read-only reference to a value. A user has to assign a variable directly. If a user tries to change the variable or if a user doesn’t set a value immediately, then the user gets an error.

const MY_CONSTANT = 1;
MY_CONSTANT = 2 // Error
const SOME_CONST; // Error
Arrow Functions

Arrow functions are the great inclusion to the JavaScript language. Many features in ES6 could fundamentally change and new JavaScript applications are architected. Arrow functions are not going to fundamentally change anything.

let books = [{title: ‘X’, price: 10}, {title: ‘Y’, price: 15}];

let titles = item => item.title );

// ES5 equivalent:

var titles = {

return item.title;


If we look at the syntax of arrow functions, there is no function keyword. What remains is zero or more arguments, the “arrow” (=>) and the function expression. The return statement is unconditionally added.


A couple of convenience methods have been added to the String prototype. Most of them basically phase-out some workarounds with the indexOf()method to achieve the same.

‘my string’.startsWith(‘my’); //true

‘my string’.endsWith(‘my’); // false

‘my string’.includes(‘str’); // true


Modules have the prospective to radically change how many JavaScript applications are structured and standardized. Modules in ES6 provides a way to load and manage dependencies through the new import and export keywords.


Promises provide a mechanism to handle the results and errors from asynchronous operations. Promises provide more readability through method chaining succinct error handling. Promises are currently used in many JavaScript libraries. RSVP.js, Q.js, and the $q service in Angular.

getJSON(“/api/employee/1″).then(function(post) {

return getJSON(post.commentURL);

}).then(function(comments) { //you could chain multiple then statements

// proceed with access to employee

}).catch(function(error) { //succinct error handling

// handle errors in either of the two requests



Django Vs TurboGears

Python is not short of packages and Web frameworks. The main aim of Web frameworks is to save the user effort of writing infrastructure code while developing a non-trivial code. Do you really want to write a code while working with different types of databases? Let’s look at the top frameworks and see the major differences between the two frameworks.


TurboGears is a Python web application framework which consists of many modules. It is designed in the MVC architecture that is similar to Ruby on Rails and Struts. TurboGears are designed to generate rapid web application development in Python to make it much easier and more endurable. TurboGears follows the Model-View-Controller paradigm and the modern frameworks like Rails, Django, and Struts.

TurboGear is built on top of best-of-breed open source components including Pylons, SQLAlchemy, Genshy, and Repoze. Pylons provides the controller mechanism, whereas Genshi provides the view through HTML/XHTML templating and SQLAlchemy looks after the model. TurboGears lets the user create single file applications or Web services in minimal mode and then switches to full-stack projects for a more complex website.

Advantages of TurboGear

  • TurboGear supports multi-database.
  • It consists of longstanding support for aggregates and multi-column primary keys.
  • It consists of a transaction system that handles multi-database transactions for the user.
  • Out of box support for reusable template tag libraries.
  • TurboGears is more flexible in using non-standard components.
  • TurboGears creates an easy method for creating reusable template tag libraries.

Below is the sample code for TurboGears

from wsgiref.simple_server import make_server
from tg import expose, TGController, AppConfig

class MyController(TGController):

def index(self):
return ‘Hello World TurboGears’

config = AppConfig(minimal = True, root_controller = MyController())
application = config.make_wsgi_app()

print “Serving on port 8080…”
server = make_server(”, 8080, application)


Django is a web development framework that assists in building and maintaining quality web applications. Django helps to exclude repetitive tasks making the development process easy and a time-saving experience.

Design philosophies of Django

Django comes with the following philosophies.

Loosely coupled: The major aim of Django is to make each element of its stack independent of the others.

Fast development: The main philosophy of Django is to facilitate hyper-fast development.

Clean design: Django strictly maintains a clean design throughout its code and makes it easy to follow best web development practices.

Advantages of Django

Object Relational Mapping (ORM) support: Django furnishes a bridge between the data model and the database engine, and supports a huge set of database systems including MySQL, Oracle, Postgrens, and much more. Django also supports NoSQL database through Django fork.

Multilingual support: Django supports multilingual websites through its in-built internationalization system. So that a user can develop their website which would support multi languages.

Framework support: Django has built-in support for Ajax, RSS, Caching and other frameworks.

Development environment: Django comes with a lightweight web server to facilitate end-to-end application development and testing.

Below is the sample code for Django

from django.http import HttpResponse
from django.views import View

class GreetingView(View):
greeting = “Good Day”

def get(self, request):
return HttpResponse(self.greeting)


Cloud Foundry Vs Docker

There are different ways to package different applications to deploy and run them in the cloud. Developers can choose in-between Cloud Foundry and Docker. The two models have certain similarities but, there are also significant differences. In this article, we have explained you some of the differences as-well-as pros and cons from a consumer point of view.

Cloud Foundry – Open Source Platform as a service

Cloud Foundry is a platform as a service (PaaS) which makes it accessible for the developers to run their applications in the cloud without worrying about the infrastructure. Cloud Foundry vendors also provide services such as databases, caches, and messaging systems that developers can leverage without having to set-up an infrastructure. Cloud Foundry also provides scalability of applications and auto recovery, it also provides logging dashboards and administration functionalities.

These application management capabilities are the key concepts and of Cloud Foundry.

Docker – Container Standard

Docker is a container technology to package complete application stacks so that these containers can be easily run on different environments. This portability is achieved by packaging not only the core applications but also the complete underlying stack which the user needs to run the applications including application servers, Java runtimes, configuration, and other dependencies. Docker uses Linux as operating system and leverages concepts such as Linux namespaces to run different applications in sandboxes.

Key advantage of Cloud Foundry

The major advantage of Cloud Foundry when it comes to the packaging applications is that it is very easy to use for the developers. Developers can develop their applications in their local IDE’s of choice, run and test them on local application server and can simply push the applications to the cloud. Through Cloud Foundry build packs most of the configuration is done automatically. For instance, if a Java Liberty application uses a NoSQL service, the feature is enabled in the build pack and the appropriate jar files are downloaded. The ease of use of the Cloud Foundry model is very valuable for rapid prototyping and facile type of applications.

Key advantage of Docker

For more disillusioned applications, it’s often desirable to have more flexibility and configuration options. With Docker images, a user has the same benefits that virtual machine provides, but Docker images are much more lightweight and easier to handle since they don’t include their own operating system.

Other Differences Between Cloud Foundry and Docker

The other major differences between Cloud Foundry and Docker are, With Docker the user can additionally use perpetual storage volumes which might make deployments of existing applications to the cloud easier. Cloud Foundry supports a smaller number of opened ports whereas Docker, in general, has no limitations. Cloud Foundry vendors also provide services that can be used to build different types of applications. These services and user accounts are automatically provisioned when services are added to applications in order to make it as-easy-as-possible for developers.


Why “Penetration Testing” is important?

Penetration testing is important because-

Security breaches and loop holes in the systems can be very costly as threat of attack is always possible and hackers can steal the important data or even crash the system.

It is impossible to protect all the information all the time. Hackers always come with new techniques to steal the important data and its necessary for testers as well to perform the testing periodically to detect the possible attacks.

Penetration testing identifies and protects a system by above mentioned attacks and helps organizations to keep their data safe.


What is “SQL injection”?

SQL Injection is one of the common attacking techniques used by hackers to get the critical data.

Hackers check for any loop hole in the system through which they can pass SQL queries which by passed the security checks and returns the critical data. This is known as SQL injection. It can allow hackers to steal the critical data or even crash a system.

SQL injections are very critical and needs to be avoided. Periodic security testing can prevent these attacks. SQL database security needed to be defined correctly and input boxes and special characters should be handled properly.


What is “Penetration Testing”?

Penetration testing is the security testing which helps in identifying vulnerabilities in a system. Penetration test is an attempt to evaluate the security of a system by manual or automated techniques and if any vulnerability found testers uses that vulnerability to get deeper access to the system and found more vulnerabilities. The main purpose of this testing to prevent a system from any possible attacks.



What is SOAP and WSDL?

SOAP or Simple Object Access Protocol  is a XML-based protocol through which applications exchange information over HTTP. XML requests are sent by web services in SOAP format then a SOAP client sends a SOAP message to the server. The server responds back again with a SOAP message along with the requested service.