C#, Cross Domain, HTML5, JavaScript, NodeJS

Visual Studio Code – A Cross Platform Code Editor built with Chromium

Microsoft has launched VSCode few weeks back for Cross Platform (Linux/Mac,Windows) and 55% download was Non-Windows. Shocking , right ?

HackerNews had a post on this and had really lot of comments/traffic on it.

Lets see the first look of Code.

Code First Look

Code First Look

Its lightweight and simple and has GIT embedded with this.

But I am not here to say that Code has been released by Microsoft. I am here to shock you little bit.

When you are on Code, Just press F12.

And lets see the below image.

Code First Look Shocked

Code First Look Shocked

#%$#@ ???? Is it Chrome Dev Tools ?

YES !!! It is!

In fact VSCode has been built with Web Technologies like HTML,CSS , JavaScript with Chromium and NodeJS . Here , Chromium is the Engine for Chrome browser by Google.

Lets get a little idea about CEF (Chromium Embedded Framework)

Tech

And they used Electron for Cross Platform . Electron helps to Build cross platform desktop apps with web technologies Formerly known as Atom Shell. Made with Love by GitHub.

Initially developed For GitHub’s Atom editor , Electron has since been used to create applications by companies like Microsoft, Facebook, Slack, and Docker.

Slack‘s new Desktop app was also built with this.

In VSCode , what we do Like adding/editing Projects/Folders/Files , all is saved in HTML5’s Client Side DBs like IndexedDB and LocalStorage. To know more about HTML5 Database , you can see my other posts on HTML5 Database here
https://shahjadatalukdar.wordpress.com/2013/09/27/using-html5-localstorage-with-angularjs/

https://shahjadatalukdar.wordpress.com/2014/01/18/websql-welcome-to-client-side-db-part1/

Lets see the below image.

HTML5 Database

HTML5 Database

Okay , lets see Where the World goes to!

Cheers!

//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js

(adsbygoogle = window.adsbygoogle || []).push({});

Advertisements
Standard
C#

Gravatar – Get avatar by email in C# and check available or not

gravatar.com is very popular now a days. So many large sites use this feature . I needed this feature in one of my working projects

But I needed to check also that email exists in Gravatar or not. If Gravatar does not have that email Id of the user , The app will show its custom Image . But If we call the Gravatar API , Gravatar sends a default image if that email is not available which was not our app’s behavior , so I needed to track and validate that.

UTF8Encoding encoder = new UTF8Encoding();
            MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
            byte[] hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(email));
            StringBuilder sb = new StringBuilder(hashedBytes.Length * 2);
            for (int i = 0; i < hashedBytes.Length; i++)
            {
                sb.Append(hashedBytes[i].ToString("X2"));
            }
            var imageHashCode = sb.ToString().ToLower();
            string gravatarImageUrl = "http://www.gravatar.com/avatar/" + imageHashCode + "?d=404";
            var uri = new Uri(gravatarImageUrl);
 
            using (WebClient client = new WebClient())
            {
                try
                {
                    var imageByte = client.DownloadData(uri);
                    var headers = client.ResponseHeaders;
                    if (headers != null && headers["Content-Disposition"] != null)
                    {
                        var header = headers["Content-Disposition"];
                        if (header.Contains(imageHashCode))
                        {
                            MemoryStream memoryStream = new MemoryStream(imageByte);
                            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(memoryStream);
                            BitmapSource image = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                            return image;
                        }
                    }
                }
                catch (Exception ex)
                {
                    return null;
                }
                return null;
            }

Check the URL generation part in the code , I have used ?d=404 . This is the main thing which does the trick so that it returns 404 if that email address does not belong to Gravatar

But if anyone needs the default behavior of Gravatar , then just remove ?d=404 from the URL . It will show the default image if the email is not available.

Hope , this helps.

Cheers

Standard
ASP.Net, ASP.Net MVC, C#, EntityFramework

EntityFramework in C# – Part2 : Calling MS SQL StoredProcedure

While we use EntiryFramework as ORM , we can use/call MS SQL StoredProcedure in our C# code . EF allows us to import StoredProcedures into our C# app as Functions .

Now I am gonna show , how we can use SP in EF . To know basic EF,please refer to my another article EntityFramework in C# – Part1 : Welcome To EF

For this demo , I have a simple SP which will return the data from a table.

StoredProcedure for EF in C#

I will fill an ASP.Net Grid with that data , and I am gonna pull the data using EF .

For this, after taking the update of EDMX , I will get the StoredProcedure inside the EDMX , and will add a Function for that SP like below —

EF - Add Function Import

Click Add Function Import and then…

EntityFramework with StoredProcedure - Function Import

Our SP is now ready in our app as a Function and we can just call that function as usual as we do.So my C# code for calling the function is like below :::

ImportantDBEntities dbEntities = new ImportantDBEntities();
            
            //Execute stored procedure as a function
            var employees = dbEntities.GetEmployees();
            if (employees != null)
            {
                employeeGrid.DataSource = employees;
                employeeGrid.DataBind();
            }

So our Grid is ready with data 🙂

Cheers

Standard
ASP.Net, ASP.Net MVC, C#, EntityFramework

EntityFramework in C# – Part1 : Welcome To EF

Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write.

I am gonna write an article on EF with an easy approach and i am trying to clearly show a CRUD application with EF .

For this example , I used one DB Table for simplicity . My DB is like below :::

Welcome to EntityFramework

Welcome to EntityFramework

To make the app simple , I took a ASP.Net Form Application which has a UI like below :::

Welcome to EntityFramework ASP.Net C# Web

The Markup code for my UI is like below :::

<h2>
        Welcome to EntityFramework!
    </h2>
  

  <table>
   <tr>
    <td>    
       Name
    </td>  
    <td>
    :
    </td>
    <td>
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
    </td>
   </tr>
  

    <tr>
    <td>    
       Address
    </td>  
    <td>
    :
    </td>
    <td>
        <asp:TextBox ID="txtAddress" runat="server"></asp:TextBox>
    </td>
   </tr>

    <tr>
    <td>    
       Salary
    </td>  
    <td>
    :
    </td>
    <td>
        <asp:TextBox ID="txtSalary" runat="server"></asp:TextBox>
    </td>
   </tr>

     <tr>
    <td>    
   
    </td>  
    <td></td>
   
    <td>
        <asp:Button ID="Button1" runat="server" Text="Save" onclick="Button1_Click" />
    </td>
   </tr>

  </table>

  <br />
       <asp:GridView ID="employeeGrid" runat="server">
    </asp:GridView>

<h1>Delete One Row By Id</h1>

  <table>
   <tr>
    <td>    
       Put Delete Id
    </td>  
    <td>
    :
    </td>
    <td>
        <asp:TextBox ID="txtDeleteId" runat="server"></asp:TextBox>
    </td>
    <td>
       <asp:Button ID="btnDelete" runat="server" Text="Delete"
            onclick="btnDelete_Click"  />
    </td>
   </tr>
  </table>

   <h1>Update Value By Id</h1>

  <table>
   <tr>
    <td>    
       Put Update Id
    </td>  
    <td>
    :
    </td>
    <td>
        <asp:TextBox ID="TxtUpdateId" runat="server"></asp:TextBox>
    </td>

     <td>    
       Put New Address
    </td>  
    <td>
    :
    </td>
    <td>
        <asp:TextBox ID="txtUpdateAddress" runat="server"></asp:TextBox>
    </td>

    <td>
       <asp:Button ID="btnUpdate" runat="server" Text="Update" onclick="btnUpdate_Click"
             />
    </td>
   </tr>
  </table>

I have Three buttons for CREATE , UPDATE , DELETE and have a method for READ .

Lets see CREATE first .

protected void btnSave_Click(object sender, EventArgs e)
        {
            ImportantDBEntities dbEntities = new ImportantDBEntities();            
            EF_Employee employee = new EF_Employee();
            employee.Name = txtName.Text;
            employee.Address = txtAddress.Text;
            employee.Salary = Convert.ToDecimal(txtSalary.Text) ;

            dbEntities.EF_Employee.AddObject(employee);
            dbEntities.SaveChanges();

            FillEmployeeGrid();
        }

Here ImportantDBEntities is my SQL Server DB Context as you saw the DB image that my DB name is ImportantDB.

And That FillEmployeeGrid() method is my READ method which will pull the data from DB table .

private void FillEmployeeGrid()
        {
            ImportantDBEntities dbEntities = new ImportantDBEntities();

            if (dbEntities.EF_Employee != null)
            {
                var employees = dbEntities.EF_Employee;
                employeeGrid.DataSource = employees;
                employeeGrid.DataBind();
            }
        }

We can also Delete a record of an ID.

protected void btnDelete_Click(object sender, EventArgs e)
        {
            int Id = Convert.ToInt32(txtDeleteId.Text);

            ImportantDBEntities dbEntities = new ImportantDBEntities();
            EF_Employee employee = dbEntities.EF_Employee.SingleOrDefault(i => i.Id == Id);
            dbEntities.EF_Employee.DeleteObject(employee);
            dbEntities.SaveChanges();

            FillEmployeeGrid();
        }

Update is also not a big deal .

protected void btnUpdate_Click(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(TxtUpdateId.Text);

            ImportantDBEntities dbEntities = new ImportantDBEntities();
            EF_Employee employee = dbEntities.EF_Employee.SingleOrDefault(i => i.Id == id);
            employee.Address = txtUpdateAddress.Text;
            dbEntities.SaveChanges();

            FillEmployeeGrid();
        }

Hope , it helps them who are new to EF .
I will write more deeper things related to EF in Part 2 .So keep an eye on my Site.

Till Then , Cheers …

Standard
ASP.Net, ASP.Net MVC, C#, EntityFramework, MVC WebAPI

Runtime error on REST WebAPI : failed to serialize the response body for content type ‘application/xml; charset=utf-8

In a Relational Database system , we may get this type of runtime error when calling WebAPI for a composite Object .

The exception looks like this :::

The ‘ObjectContent`1’ type failed to serialize the response body for content type ‘application/xml; charset=utf-8

We can solve this problem by adding the below lines in WebApiConfig.cs file under App_Start folder inside WebAPI project .

var json = config.Formatters.JsonFormatter;
            json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;

Will write few full step by step articles on EntityFramework and WebAPI on this blog , so Please Keep an eye on this Blog .

Thanks 🙂

Standard
ASP.Net, C#

Bind C# List of object data with HTML without using ASP.Net control in ASP.Net

In ASP.Net we always use so may ASP.Net controls . But we also know ASP.Net controls have ViewState , so we should ignore using ASP.Net controls as much as possible to reduce the Load time of DOM .

In my example , I will show how we can bind and show the data to HTML without using ASP.Net Control in ASP.Net.

I have a List of a custom object like below :

protected List<voNote> notes = new List<voNote>();

This is a list of a ViewModel . and the ViewModel of my example is like below :::

public class voNote
    {
        public string Note { get; set; }

        public DateTime Date { get; set; }

        public string NoteCreatedBy { get; set; }

        public string TicketUrgency { get; set; }
    }

Let, We have populated the List from Database Server . Now we have to show/Bind the Data to the UI .

So my markup code will be just simple like below :

<%
        foreach (voNote note in notes)
        {
    %>
            <hr class="NoteBorder" />
            <div><%=note.Date %> | <%=note.NoteCreatedBy %> | <%= note.TicketUrgency %></div>
           
            <div class="NoteDiv"><%=note.Note %></div>
    <%
        }
    
    %>

So , its done 🙂

Standard