A day with .Net

My day to day experince in .net

Visualise Computational Graphs with Tensorboard and Tensorflow

Posted by vivekcek on August 6, 2017

In this post i will show , how you can visualise computational graphs created by tensorflow bu using tensorboard.

I am using visual studio for tensorflow development in windows. Refer my previous blog to setup tensor flow in windows Installing tensorflow in windows

Hope the reader has some basic understanding of tensorflow. Tensorflow execute every operation by building computational graphs. To visualize such graph we use tensorboard.

Tensorboard is a visualisation tool that will be installed as a part of tensorflow installation.

Write below code in visual studio. In this code we declare four constants, then we multiply ‘a’ and b’ after that we divide ‘c’ and ‘d’ then result of both were added to produce the final output.

import tensorflow as tf

a=tf.constant(6,name="a")
b=tf.constant(3,name="b")
c=tf.constant(10,name="c")
d=tf.constant(5,name="d")

mul=tf.multiply(a,b,name="mul")
div=tf.div(c,d,name="div")

addn=tf.add_n([mul,div],name="addn")

sess=tf.Session()
output =sess.run(addn)
print(output)
writer=tf.summary.FileWriter('./visual',sess.graph)
writer.close()
sess.close()

These line actually help us to create graphs for above computation. Here “visual” is a folder created in your running directory.

writer=tf.summary.FileWriter('./visual',sess.graph)
writer.close()

Now go to your running directory and execute below command.

tensorboard --logdir="visual"

Now browse to the link and see the graph.

Posted in Tensorflow | Tagged: , , , , | Leave a Comment »

UiPath Automation Video Tutorial – Data Entry In Windows Application

Posted by vivekcek on August 4, 2017

This is my first attempt to create some YouTube video tutorials. In this video i will demonstrate how you can automate a windows application via UiPath.

UiPath is one of the leading RPA provider and you don’t need much technical expertise to learn it.
Also it is easier to learn than test automation.

Posted in UiPath(Robotic Process Automation) | Tagged: , , | Leave a Comment »

Developing an Ethereum BlockChain based Web Application for Voting

Posted by vivekcek on July 2, 2017

Hi Guys are you new to BlockChain? And want to develop your first Web app with Ethereum?
Then you are in the right place. Before starting the app, Make sure you have the Ethereum development environment is ready in your system. Later I will write a blog post on setting up Ethereum.

This is not a beginner tutorial. Hope the reader deployed and tested some HelloWorld Contracts in Ethereum

So what is my development environment?
1. Windows 8
2. Visual studio code With Solidity
3. NPM
4. Truffle
5. TestRPC
6. MetaMask(Optional)

So now follow the steps.

1.Open PowerShell.
2.Create a directory with mkdir.
3.Issue the command.

Truffle init webpack

4.Now open the VS Code with below command.

Code .

5.Now we need to delete some files from Contracts folder, which is created by truffle.

6.Now create a new file under Contracts folder named “Voting.sol”.

7.Now add below code in Voting.sol and hit Save.

pragma solidity ^0.4.2;

contract Voting {
    mapping (bytes32=>uint8) public votesReceived;
    bytes32[] public candidateList;

    function Voting(bytes32[] candidateNames){
        candidateList=candidateNames;
    }

    function totalVotesFor(bytes32 candidate) returns (uint8) {
        if (validCandidate(candidate) == false) throw;
        return votesReceived[candidate];
    }

    function voteForCandidate(bytes32 candidate) 
    {
        if (validCandidate(candidate) == false) throw;
        votesReceived[candidate] += 1;
    }

    function validCandidate(bytes32 candidate) returns (bool) 
    {
        for(uint i = 0; i < candidateList.length; i++) {
        if (candidateList[i] == candidate) {
            return true;
        }
        }
        return false;
    }
}

8.Now you need to update the contents of two files in Migrations folder with below code

var Voting = artifacts.require("./Voting.sol");
module.exports = function(deployer) {
  deployer.deploy(Voting, ['Vivek', 'Jay', 'Ram']);
};

9.Open a new instance of PowerShell in new window and enter the below command.

testrpc

10.Now in the first PowerShell issue the below commands

truffle compile
truffle migrate

11.Now enter the command and test with below codes

Truffle console
Voting.deployed().then(function(contractInstance) {contractInstance.voteForCandidate('Vivek').then(function(v) {console.log(v)})})
Voting.deployed().then(function(contractInstance) {contractInstance.totalVotesFor.call('Vivek').then(function(v) {console.log(v)})})

12.Now we can setup our web application.
13.Go and edit app.js and index.html with below code.

Add this in app.js

// Import the page's CSS. Webpack will know what to do with it.
import "../stylesheets/app.css";

// Import libraries we need.
import { default as Web3} from 'web3';
import { default as contract } from 'truffle-contract'

// Import our contract artifacts and turn them into usable abstractions.
import voting_artifacts from '../../build/contracts/Voting.json'


var Voting = contract(voting_artifacts);
let candidates = {"Vivek": "candidate-1", "Jay": "candidate-2", "Ram": "candidate-3"}

window.App = {
  start: function() {
    var self = this;
    
    Voting.setProvider(web3.currentProvider);

    let candidateNames = Object.keys(candidates);
    for (var i = 0; i < candidateNames.length; i++) {
      let name = candidateNames[i];
      Voting.deployed().then(function(contractInstance) {
        contractInstance.totalVotesFor.call(name).then(function(v) {
          $("#" + candidates[name]).html(v.toString());
        });
      })
    }
   
  },

  voteForCandidate : function(candidate) {
  let candidateName = $("#candidate").val();
    try {
      $("#msg").html("Vote has been submitted. The vote count will increment as soon as the vote is recorded on the blockchain. Please wait.")
      $("#candidate").val("");

      /* Voting.deployed() returns an instance of the contract. Every call
      * in Truffle returns a promise which is why we have used then()
      * everywhere we have a transaction call
      */
      Voting.deployed().then(function(contractInstance) {
        contractInstance.voteForCandidate(candidateName, {gas: 140000, from: web3.eth.accounts[0]}).then(function() {
          let div_id = candidates[candidateName];
          return contractInstance.totalVotesFor.call(candidateName).then(function(v) {
            $("#" + div_id).html(v.toString());
            $("#msg").html("");
          });
        });
      });
    } catch (err) {
      console.log(err);
    }
    }
   
};

window.addEventListener('load', function() {
  // Checking if Web3 has been injected by the browser (Mist/MetaMask)
  if (typeof web3 !== 'undefined') {
    console.warn("Using web3 detected from external source. If you find that your accounts don't appear or you have 0 MetaCoin, ensure you've configured that source properly. If using MetaMask, see the following link. Feel free to delete this warning. 🙂 http://truffleframework.com/tutorials/truffle-and-metamask")
    // Use Mist/MetaMask's provider
    window.web3 = new Web3(web3.currentProvider);
  } else {
    console.warn("No web3 detected. Falling back to http://localhost:8545. You should remove this fallback when you deploy live, as it's inherently insecure. Consider switching to Metamask for development. More info here: http://truffleframework.com/tutorials/truffle-and-metamask");
    // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
    window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
  }

  App.start();
});

Add this in index.html

<!DOCTYPE html>
<html>
<head>
  <title>MetaCoin - Truffle Webpack Demo w/ Frontend</title>
  <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
  <link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' rel='stylesheet' type='text/css'>
  <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
  <script src="./app.js"></script>
</head>
<body class="container">
  <h1>A Simple Hello World Voting Application</h1>
  <div id="address"></div>
  <div class="table-responsive">
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>Candidate</th>
          <th>Votes</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Vivek</td>
          <td id="candidate-1"></td>
        </tr>
        <tr>
          <td>Jay</td>
          <td id="candidate-2"></td>
        </tr>
        <tr>
          <td>Ram</td>
          <td id="candidate-3"></td>
        </tr>
      </tbody>
    </table>
    <div id="msg"></div>
  </div>
  <input type="text" id="candidate" />
  <a href="#" onclick="App.voteForCandidate()" class="btn btn-primary">Vote</a>
</body>
</html>

14.Now issue the command

npm run dev

15.Now open Chrome in incognito.
16.And hit the url http://localhost:8081/
17.Happy coding with blockchain

Posted in BlockChain | Tagged: , , , , , , , | Leave a Comment »

Insert values to a table with MERGE and keeping the order of insertion SQL Server

Posted by vivekcek on June 28, 2017

In some cases you may want to insert some values into the production database during a new release.
What we normally do is sharing some data insert script to the DBA.
What will happen when this DBA people run your script multiple times? Duplicates!!! oops!! application down!!

So to avoid this we need to add condition for duplicate checking in our query.
This can be achieved by MERGE statement.

Try this example.

1. Create a table

CREATE TABLE UserInfo(Id INT,Name VARCHAR(50), Email VARCHAR(100));

2. Insert one record.

INSERT INTO UserInfo VALUES(1,'Vivek','vivek@vivek.com')

3. Now prepare the data need to insert. Here we are using the SELECT and UNION ALL.
UNION ALL will preserve the order of insertion (Try with UNION only then you can see the difference)

SELECT 1 AS Id,'Vivek' AS Name, 'vivek@vivek.com' AS Email
UNION ALL
SELECT 2 AS Id,'Ramu' AS Name, 'ramu@ramu.com' AS Email
UNION ALL
SELECT 3 AS Id,'Jay' AS Name, 'Jay@ramu.com' AS Email

4. Now write the MERGE statement as below and execute. You can see only 2 records got inserted and they are in order.

MERGE INTO UserInfo AS UserInfoTarget
USING(
SELECT 1 AS Id,'Vivek' AS Name, 'vivek@vivek.com' AS Email
UNION ALL
SELECT 2 AS Id,'Ramu' AS Name, 'ramu@ramu.com' AS Email
UNION ALL
SELECT 3 AS Id,'Jay' AS Name, 'Jay@ramu.com' AS Email
)AS Source
ON (UserInfoTarget.Id=Source.Id AND UserInfoTarget.Name=Source.Name AND UserInfoTarget.Email=Source.Email)
WHEN NOT MATCHED THEN
INSERT VALUES(Source.Id,Source.Name,Source.Email);

Full code.

Posted in SQL | Tagged: , , , | Leave a Comment »

Installing Tensorflow in Windows and Visual Studio – Deep learning.

Posted by vivekcek on March 25, 2017

Recently i was working with designing a chat-bot with Microsoft bot framework.
And i was using a combination of Retrieval based model and Intent/Entity based model.

During the research i decided to include some deep learning into the bot with a Generative Model.
Because generative Models will be the future of chat bot’s.

So i decided to play with Google’s tensorflow for deep learning implementation.
As i am a .NET guy, i like to do all my experiments with Visual Studio.
Then i googled and found that we can integrate tensorflow with Visual Studio.

So how can we do that? First we need to have below software requirements.

1. A 64 bit Windows.
2. Visual studio 2015.

Now download 64 bit Python 3.5, You can have it from below link.
https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe

Install python, Please ensure that you selected the “Add Python 3.5 to PATH”

Now open the Command Prompt in Administrator Mode.
Then check the Python Version, by using below commands and ensure that you have 3.5 , 64 bit version.

python --version

Now we need to update pip, Issue the below command.

python -m pip install --upgrade pip

Now install the CPU mode tensorflow by using below command.

pip install tensorflow

Now try this code in your python prompt.

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

Now to do python in visual studio, we need to install Python Tools For Visual Studio.
Have it from this link https://github.com/Microsoft/PTVS

After successful installation create a python application in Visual studio.

Add below code in your file and run.

import tensorflow as tf
hello = tf.constant('Hello, Tensorflow on Windows!')
sess = tf.Session()
print(sess.run(hello))

Posted in Tensorflow | Tagged: , , , | Leave a Comment »

Dependency Injection in Microsoft Bot Framework

Posted by vivekcek on January 15, 2017

In this post i will show you, how you can implement dependency injection in Microsoft Bot application.
Basically Microsoft bot application is a Web API service. So you can implement dependency injection, the same way you done it in Web API.

Here i am using Ninject to implement dependency injection.

1. Add below Nuget Packages

“Ninject.Web.WebApi”

1

“Ninject.Web.Common.WebHost”

2

2. Go to App_Start folder and open NinjectWebCommon.cs

3. Update the CreateKernel() method by adding below line.

RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;

4. You may need to add below namespaces in NinjectWebCommon.cs

using System.Web.Http;
using Ninject.Web.WebApi;

5. Register your services in NinjectWebCommon.cs

private static void RegisterServices(IKernel kernel)
{
  kernel.Bind<IMyInterface>().To<MyClass>();
}    

6. Use this class inside your MessageController.

[BotAuthentication]
public class MessagesController : ApiController
{
        
private readonly IMyInterface instance;
public MessagesController(IMyInterface _instance)
{
  instance = _instance;
}

Posted in Bot Framework | Tagged: , , | Leave a Comment »

Moving your app to free service plan in microsoft azure.

Posted by vivekcek on November 11, 2016

I was working on a research project with a developer essentials account in azure.
The first problem i faced was to deploy the app from visual studio ,immediately after creating my subscription.
So i just logged in to the portal and created a Web App, unfortunately i forgot to select the free pricing tier.

After someday’s i found that my credit is going down, from the bill it was found that the app service is consuming all money.

Immediately i had to do something. I tried the below steps.

1. Created a new app in the same resource group with a new service plan and free pricing tier.
2. Then i changed the service plan of my existing app to new free service plan.
3. Then tried to delete my old service plan.
4. Haaaa got the error, i can’t delete this plan due to an app is associated with it.
5. But there was no app associated with that plan.
6. After some reserach i found that it is the resource group is causing the issue.
7. I can’t delete my existing default resource group, as my existing app and free service plan is running above it.
8. Now i created a new Resource group and moved my old service plan to this group.
9. Then i was able to delete my old plan and my app is now running freely.

Moving Service plan to new resource group

1
Deleteing the resource group.

2

Posted in Azure | Tagged: | Leave a Comment »

Amzon AWS Windows Server 2016 hosting -Could not write to output file

Posted by vivekcek on November 2, 2016

I was trying to host an ASP.NET 4.5 application in an Amazon EC2 instance (Windows Server 2016)

Then i got below error

CS0016: Could not write to output file ‘c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\6a5d994b\b5f46f1c\App_global.asax.o34wdr3q.dll’ — ‘Access is denied. ‘

We can solve this by below power shell script

$dir = "C:\Windows\Temp"
$acl = get-acl -path $dir
$new = "IIS_IUSRS","FullControl","ContainerInherit,ObjectInherit","None","Allow"
$accessRule = new-object System.Security.AccessControl.FileSystemAccessRule $new
$acl.SetAccessRule($accessRule)
$acl | Set-Acl $dir

Posted in Amazon AWS | Tagged: , | Leave a Comment »

Angular 2 Routing And Passing Parameters

Posted by vivekcek on October 30, 2016

When we plan to develop an Angaular2 application, the first thing need to be in place is a good routing module.
So the intention of this post is to help developers to design a routing mechanism for their Angular2 App.

Hope the reader have some good understanding of Angular2 basics like Module, Component, Routing etc.

We are going to develop an app that have 2 pages ‘Home’ and ‘Products’.
The Home page contain a textbox and a button. Once we enter some value in the textbox and click the button,
products page will be displayed with the value we entered in the home page.

So this post also demonstrate, how you can pass value from one component to another via routing.

Let us have a look at the UI.

Home Page
1

Products Page

2

We have 3 components in our app.

1. AppComponent (Which is our root component).
2. HomeComponent
3. ProductListComponent

Now follow these steps:

1. First let us create our Routing Module.

import { NgModule } from '@angular/core'
import { RouterModule, Routes} from '@angular/router'

import { HomeComponent } from './home.component'
import {ProductListComponent} from './product-list.component'

const routes:Routes=[
    { path:'', redirectTo:'/home', pathMatch:'full' },
    { path:'home', component:HomeComponent },
    {path:'products/:value', component:ProductListComponent}

];

@NgModule({
    imports:[RouterModule.forRoot(routes)],
    exports:[RouterModule]
})

export class AppRoutingModule{}

2. Integrate our routing module to main AppModule.

import {NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {FormsModule} from '@angular/forms'
import{AppRoutingModule} from './app-routing.module'

import {AppComponent} from './app.component'
import {HomeComponent} from './home.component'
import {ProductListComponent} from './product-list.component'

@NgModule({
    imports:[BrowserModule,FormsModule,AppRoutingModule],
    declarations:[AppComponent,HomeComponent,ProductListComponent],
    providers:[],
    bootstrap:[AppComponent]
})

export class AppModule{}

3. Add as the first child of head.

4

4. Define route links and outlet in our root component (AppComponent)

import { Component} from '@angular/core'

@Component({
    moduleId:module.id,
    selector:'my-app',
    template:`
    <h1>{{Title}}</h1>
    <nav>
    <a routerLink='/home'>Home</a>
    <a [routerLink]="['/products','test']">Products</a>
    </nav>
    <router-outlet></router-outlet>
    `
})

export class AppComponent{
    Title:string='Routing Demo';
}

5. Here is th code for HomeComponent

import {Component} from '@angular/core'
import {Router} from '@angular/router'
@Component({
    moduleId:module.id,
    selector:'my-home',
    templateUrl:'home.html'
})

export class HomeComponent{
    Title:string='Home';
    
    constructor(private router:Router){

    }

    Go(value:string):void{
        let link=['/products',value];
        this.router.navigate(link);
    }
  
}

6. Here is the code for home.html

<h2>{{Title}}</h2>
<input #input/>
<button (click)="Go(input.value)">Next Page</button>

7. Here is the code for ProductListComponent

import {Component,OnInit} from '@angular/core'
import{ActivatedRoute,Params} from '@angular/router'
import{Location} from '@angular/common'
@Component({
    moduleId:module.id,
    selector:'product-list',
    templateUrl:'products.html'
})

export class ProductListComponent implements OnInit{
    Title:string='Product List';
    Input:string;
    constructor(private router:ActivatedRoute,
    private location:Location){}

    ngOnInit():void{
        this.router.params.forEach((params:Params)=>{
            
            this.Input=params['value'];
          
        })
    }

    goBack():void{
        this.location.back();
    }
}

8. Here is the code for products.html

<h2>{{Title}}</h2>
<label>Passed Value is {{Input}}</label>

So you are done.

Download code from https://github.com/vivekcek/AngularCRUD

Posted in Angular2 | Tagged: , , | Leave a Comment »

Desktop application with Angular2 and Electron in One minute

Posted by vivekcek on October 24, 2016

We can use Angular2 and electron to build nice desktop application for Windows/Mac/Linux.
So how to do it in a minute

1. Install visual studio code.
2. Install Node package manager.
3. Clone the code from my git hub.

https://github.com/vivekcek/angular2electron

4. Run command “npm install”
5. Run command “npm start” or debug with VS Code.
6. Please set the path in launch.json, and point to electron module.

capture

capture1

Posted in Angular2 | Tagged: | Leave a Comment »