Thursday, November 26, 2015

Simulating Network TCP Delay Using Linux Commands

Keep in mind that this only works for outbound traffic, so choose your network interface accordingly.

To add 100ms to all outbound traffic on etho

sudo tc qdisc add dev eth0 root netem delay 100ms

To check status

sudo tc -s qdisc

To remove the delay from eth0

sudo tc qdisc del dev eth0 root






Tuesday, November 17, 2015

How to deploy a local jar to maven repository

mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=<packaging>
-DgeneratePom=true

Where: <path-to-file>  the path to the file to load
   <group-id>      the group that the file should be registered under
   <artifact-id>   the artifact name for the file
   <version>       the version of the file
   <packaging>     the packaging of the file e.g. jar

Sunday, October 4, 2015

Working with hashCode and equals methods in java

In this post, I will point out my understanding about hashCode and equals methods in java. I will talk about how their default implementation and how to override them correctly.

hashCode() and equals() methods have been defined in Object class which is parent class for java objects. For this reason, all java objects inherit a default implementation of these methods.

Configuring a remote for a fork

To sync changes you make in a fork with the original repository, you must configure a remote that points to the upstream repository in Git.
  1. Open Terminal (for Mac users) or the command prompt (for Windows and Linux users).
  2. List the current configured remote repository for your fork.
    git remote -v
    # origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
    # origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
    
  3. Specify a new remote upstream repository that will be synced with the fork.
    git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
    
  4. Verify the new upstream repository you've specified for your fork.
  5. git remote -v
    # origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
    # origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
    # upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
    # upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Saturday, October 18, 2014

Wild Card Paramters in Java

In this post I'm going to give you a small introduction about Wild card parameters used is java.

In java, Type parameters for generics have a limitation. Generic type parameters should match exactly for assignments. for example, If we use following statement in a java program, it will give a compilation error of incompatible types.

List<Number> intList = new ArrayList<Integer>();

If we slightly change the above statement to use wildcard parameter, it will compile without any errors.

List<?> wildCardList = new ArrayList<Integer>();

So, what does a wildcard mean? It's just like the wildcard, you use for substituting for a card in a card game. In java, you can use a wildcard parameter to indicate that it can match any type. With List<?>, you can mean that it is a List of any type. But when you want a type a indicating "any type", you may use the Object class, don't you? How about the statement, but using the Object type parameter?

List<Object> wildCardList = new ArrayList<Integer>();

No luck, you will get same compilation error you got when you used the first statement. In this case you are still trying to use subtyping for generic parameters. As you can see, List<Object> and List<?> are not same. In face List<?> is a super type of any List type. which means you can pass List<Integer>, or List<String>, or even List<Object> where List<?> is expected.

Thanks 

Wednesday, August 20, 2014

How to Configure Embedded Jetty Server with Maven

Hi Guys,

Through this post, I will show how to configure the embedded jetty server plugin with maven projects. First let's see what is Jetty. Jetty is a light weight web server. In it you can deploy your web application during the development phrase.

The Jetty Maven plugin is useful for rapid development and testing. You can add it to any webapp project that is structured according to the usual Maven defaults. The plugin can then periodically scan your project for changes and automatically redeploy the webapp if any are found. This makes the development cycle more productive by eliminating the build and deploy steps.

Lets see how to setup the jetty server into maven projects

First step, Create a maven web app project.  use the following command in to create a new hello world project.



Once your project creation successful, a new web application project named “hello-webapp“, and the entire project directory structure is created automatically. Then go to that project root directory and open the pom.xml and then add the following code block within the build tag.

Once you add this plugin, you can deploy your hello-webapp application into jetty-server. To deploy the webapp in to jetty server, you the command as follows


then to view your web app in your browser localhost:8080/hello-webapp then try more complicated examples.

Saturday, July 26, 2014

Intro about D3js

In this post I'm going to write an introduction about one of the JavaScript library called D3js. 
The D3js JavaScript library helps us to make beautiful, interactive, browser-based data visualizations. And this D3js allows us to manipulate elements of a web page in the context of a data set. These elements can be HTML, SVG (Scalable Vector Graphics) , or Canvas elements, and can be introduced, removed, or edited according to the contents of the data set.

Before moving to an example on this, we should know some fundamentals things when we developing a web page. such as HTML, CSS, JavaScript, SVG ans Canvas elements. I assume that you know about those fundamentals.

Let's look at a basic code structures




<!DOCTYPE html>
<html>
<head>    
 <meta charset="utf-8">
 <style>.........</style>   
<script src="d3.js"></script> (1) <script> function draw(data) { (2)
// D3 visualization code goes here
} </script> </head> <body> ...... <script> d3.json("data/some_data.json", draw); (3) </script> </body> </html>

Have a look at the following description of the about blocks

(1) The D3js library is included to give our visualizations access to the D3js methods.

(2) Here, we always call draw function. Once it is called the data has been downloaded to the client. It will contain the bulk of the code necessary to create the visualization.

(3) The d3.json() function makes an HTTP GET request to a JSON file at the URL described by its first argument and once the data has been downloaded, will then call the function passed as the second argument. This second argument is a callback function (which we will always call draw), which is passed, as its only parameter, the contents of the JSON having been turned into an object or an array, whichever is appropriate.

Look at the following codes

Let me explain by showing an example. Here we will make a simple horizontal bar chat with use of D3js. I'm going to use the following code block which is a common standard structure for HTML page with JavaScript and CSS.


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Bar Chart</title>
    <style>
        .chart div {
            background-color: steelblue;
            text-align: right;
            padding: 3px;
            margin: 1px;
            color: white;
        }
    </style>
    <script src="d3.js"></script>
</head>
<body>

<div class="chart"></div>

<script>
    var data = [4, 8, 15, 16, 23, 42];

    var x = d3.scale.linear()
            .domain([0, d3.max(data)])
            .range([0, 420]);

    d3.select(".chart")
            .selectAll("div")
            .data(data)
            .enter().append("div")
            .style("width", function (d) {
                return x(d) + "px";
            })
            .text(function (d) {
                return d;
            });
</script>
</body>
</html>


Copy and paste above code into a html page. and open it in the browser.

Enjoy with the Graph.