Posts

IronPython

IronPython is an open-source implementation of the Python programming language which is tightly integrated with .NET.  IronPython can use .NET and Python libraries, and other .NET languages can use Python code just as easily. Why IronPython? IronPython is an excellent addition to .NET, providing Python developers with the power of the .NET. Existing .NET developers can also use IronPython as a fast and expressive scripting language for embedding, testing, or writing a new application from scratch. The CLR is a great platform for creating programming languages, and the DLR makes it all the better for dynamic languages.  Calling (Iron)Python code from a C# app? The process is simple, especially in a C#/.NET 4 application where support for dynamic languages have been improved via usage of the dynamic type. But it all ultimately depends on how you intend to use the (Iron)Python code within your application. You could always run ipy.exe as a separate process and pass your source fi...

Server Side Technologies

Image
Server side web technology is used to develop dynamic web resource programs that having the capability to generate dynamic web pages. Server side web technologies are two types. Process based                 Thread based    Process based Technologies are CGI and thread based technologies are Servlet, JSP, ASP.net. A light weight sub process is called Thread. Operating system controls processes but threads can be controlled through java programming using JRE support. Transferring control between two processes (or) between two threads is called as “Context switch” (or) “Control jumping” (or) “scheduling”. The scheduling on processes takes more time compare to the scheduling on threads. Since processes based scheduling takes more time, the CGI web applications performance will be degraded when multiple requests are given simultaneously. This makes the CGI web applications as non-scaleable web applications (If application gives good per...

AGILE Estimation Methods

  AGILE Estimation Methods Many people have used a variation of Planning Poker to do Agile estimation.  Here is a reference of 9 different Agile estimation techniques for different circumstances.   Planning Poker: Participants use specially-numbered playing cards to vote for an estimate of an item.  Voting repeats with discussion until all votes are unanimous.  There are lots of minor variations on Planning Poker.  Good technique to estimate a very small number of items (2 to 10). Bucket System: Using the same sequence as Planning Poker, a group or a team estimate items by placing them in “buckets”.  The Bucket System is a much faster Agile estimation technique than Planning Poker because there is a “divide-and-conquer” phase.  The Bucket System can also be used with larger groups than Planning Poker and with very large numbers of items to be estimated (50 to 500).  I teach this agile estimation technique in my Certified Scrum Master (CS...

MEF Framework

Image
This article provides an overview of the Managed Extensibility Framework that was introduced in the .NET Framework 4 What is MEF? The Managed Extensibility Framework is a library for creating lightweight, and extensible applications.  It allows application developers to discover and use extensions with no configuration required.  It also lets extension developers easily encapsulate code and avoid fragile hard dependencies.  MEF not only allows extensions to be reused within applications, but across applications as well. The problem of extensibility? Imagine that you are the architect of a large application that must provide support for extensibility. Your application has to include a potentially large number of smaller components, and is responsible for creating and running them The simplest approach to the problem is to include the components as source code in your application, and call them directly from your code. This has a number of obvious drawbacks. Most importantl...

Effort Estimation in Software Development.

Effort estimation is one of the initial steps in software development projects. Despite its complexity, when performed right, effort estimation creates a basis for all subsequent stages related to project planning and management. What is effort estimation?   There are three main factors when planning and estimating a software development project: The Scope(or the deliverables) The Resources (the budget and the team’s effort) The Timeline Software development effort estimation deals with predicting the effort required to develop quality product.  Effort estimation (and other estimates) create some certainty and commitment and are used for planning and making decisions for the project (planning budget, investment, and pricing).  How do you estimate efforts in software development using agile process? Effort estimation happens during the initial stages of software projects. Inaccurate estimations cause complications during the implementation of the project and further develo...

Cache-Control(Http Header)

 The Cache-Control HTTP header holds directives (instructions) for caching in both requests and responses. A given directive in a request does not mean the same directive should be in the response. Syntax: Caching directives have the following rules to be valid: Case-insensitive, but lowercase is recommended. Multiple directives are comma-separated. Some directives have an optional argument, which can be either a token or a quoted-string. (See spec for definitions) Cache request directives Standard Cache-Control directives that can be used by the client in an HTTP request. Cache-Control: max-age=<seconds> Cache-Control: max-stale[=<seconds>] Cache-Control: min-fresh=<seconds> Cache-Control: no-cache Cache-Control: no-store Cache-Control: no-transform Cache-Control: only-if-cached Cache response directives Standard Cache-Control directives that can be used by the server in an HTTP response. Cache-Control: must-revalidate Cache-Control: no-cache Cache-Control: no-s...

Redis Cache DB setup with C#

Image
  Redis is a NoSQL key-value cache that stores the information in a hash table format, providing the possibilities to store different types of structured data like strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs Installing REDIS on Windows  Officially Redis doesn't have an official version for windows, but being an open-source project, there is a fork by MSOpenTech where there is the possibility of running Redis on Windows.  Requirements to install Redis: 64 bit OS The windows package manager Chocolatey In order to install Redis on Windows using Chocolatey, we need to run a simple command with the command prompt (as administrator) and just follow the instructions: C:\> choco install redis-64  Once the installation is complete, we can run the Redis server instance using the command redis-server.exe. If you have problems running the command and get the error "Redis-server is not recognized as an internal...etc" is because chocolatey failed regist...

Redis - Cache DB Introduction

  Redis :  It stands for Remote Directory Server is an in-memory data structure store, used as a database, cache, and message broker. It is a disk-persistent key-value database with support for multiple data structures or data types Redis is an open source (BSD licensed), highly replicated, performant, non-relational kind of database and caching server. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, geospatial indexes, and streams.  Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. You can run atomic operations on these types, like appending to a string; incrementing the value in a hash; pushing an element to a list; computing set intersection, union and difference; or getting the member with highest ranking in a sorted set. To achieve top perfor...

Git Branching

Image
 Git was designed from the ground up as a distributed version control system. Being a distributed version control system means that multiple redundant repositories and branching are first class concepts of the tool. In a distributed VCS like Git every user has a complete copy of the repository data stored locally, thereby making access to file history extremely fast, as well as allowing full functionality when disconnected from the network. It also means every user has a complete backup of the repository. Branches in Git are a core concept used everyday by every user. In Subversion they are more cumbersome and often used sparingly. The reason branches are so core in Git is every developer's working directory is itself a branch. Even if two developers are modifying two different unrelated files at the same time it's easy to view these two different working directories as different branches stemming from the same common base revision of the project Main Branches The main reposito...

Understanding OAuth2

 What is OAuth2? OAuth2.0 is an open authorization protocol, which allows accessing the resources of the resource owner by enabling the client applications on HTTP services such as Facebook, GitHub, etc. It allows sharing of resources stored on one site to another site without using their credentials. It uses username and password tokens instead. Why Use OAuth 2.0? You can use OAuth 2.0 to read data of a user from another application. It supplies the authorization workflow for web, desktop applications, and mobile devices. It is a server side web app that uses authorization code and does not interact with user credentials. Features of OAuth 2.0 OAuth 2.0 is a simple protocol that allows to access resources of the user without sharing passwords. It provides user agent flows for running clients application using a scripting language, such as JavaScript. Typically, a browser is a user agent. It accesses the data using tokens instead of using their credentials and stores data in online...

Email Sending through O365 using OAuth Protocol

  Microsoft Office365 EWS servers have been extended to support authorization via the industry-standard OAuth 2.0 protocol. Using OAUTH protocol, user can do authentication by Microsoft Web OAuth instead of inputting user and password directly in application Microsoft / Office 365 OAuth + EWS We can use the OAuth authentication service provided by Azure Active Directory to enable our application to connect with IMAP, POP or SMTP protocols to access Exchange Online in Office 365. To use OAuth with our application we need to register application on Azure Active directory and other steps also we need to do to get the access token back. Below are the steps   To use Microsoft/Office365 OAUTH in your application, you must create an application in  https://portal.azure.com . Sign into the Azure portal using either a work or school account or a personal Microsoft account. If your account gives you access to more than one tenant, select your account in the top ...