Monday, December 23, 2013

ASP.NET Fundamentals: ASP.NET is Object-Oriented Language

ASP.NET Fundamentals: ASP.NET is Object-Oriented Language

ASP provides a relatively feeble object model. It provides a small set of objects; these objects are really just a thin layer over the raw details of HTTP and HTML. On the other hand, ASP.NET is truly object oriented. Not only does your code have full access to all objects in the .NET Framework, but you can also exploit all the conventions of an OOP (object-oriented programming) environment. For example, you can create reusable classes, standardize code with interfaces, extend existing classes with inheritance, and bundle useful functionality in a distributable, compiled component.

One of the best examples of object-oriented thinking in ASP.NET is found in server-based controls. Server-based controls are the epitome of encapsulation. Developers can manipulate control objects programmatically using code to customize their appearance, provide data to display, and even react to events. The low-level HTML markup that these controls render is hidden away behind the scenes. Instead of forcing the developer to write raw HTML manually, the control objects render themselves to HTML just before the web server sends the page to the client. In this way, ASP.NET offers server controls as a way to abstract the low-level details of HTML and HTTP programming.

Here’s a quick example with a standard HTML text box that you can define in an ASP.NET web page:

<input type="text" id="myText" runat="server" />

With the addition of the runat="server" attribute, this static piece of HTML becomes a fully functional server-side control that you can manipulate in C# code. You can now work with events that it generates, set attributes, and bind it to a data source. For example, you can set the text of this box when the page first loads using the following C# code:

void Page_Load(object sender, EventArgs e)
{
  myText.Value = "Hello World!";
}

Technically, this code sets the Value property of an HtmlInputText object. The end result is that a string of text appears in a text box on the HTML page that’s rendered and sent to the client.

HTML Controls VS. Web Controls

When ASP.NET was first created, two schools of thought existed. Some ASP.NET developers were most interested in server-side controls that matched the existing set of HTML controls exactly. This approach allows you to create ASP.NET web-page interfaces in dedicated HTML editors, and it provides a quick migration path for existing ASP pages. However, another set of ASP.NET developers saw the promise of something more—rich server-side controls that didn’t just emulate individual HTML tags. These controls might render their interface from dozens of distinct HTML elements while still providing a simple objectbased interface to the programmer. Using this model, developers could work with programmable menus, calendars, data lists, validators, and so on.

After some deliberation, Microsoft decided to provide both models. You’ve already seen an example of HTML server controls, which map directly to the basic set of HTML tags. Along with these are ASP.NET web controls, which provide a higher level of abstraction and more functionality. In most cases, you’ll use HTML server-side controls for backward compatibility and quick migration, and use web controls for new projects.

ASP.NET web control tags always start with the prefix asp: followed by the class name. For example, the following snippet creates a text box and a check box:

<asp:TextBox id="myASPText" Text="Hello ASP.NET TextBox" runat="server" />
<asp:CheckBox id="myASPCheck" Text="My CheckBox" runat="server" />

Again, you can interact with these controls in your code, as follows:

myASPText.Text = "New text";
myASPCheck.Text = "Check me!";

Notice that the Value property you saw with the HTML control has been replaced with a Text property. The HtmlInputText.Value property was named to match the underlying value attribute in the HTML <input> tag. However, web controls don’t place the same emphasis on correlating with HTML syntax, so the more descriptive property name Text is used instead.

The ASP.NET family of web controls includes complex rendered controls (such as the Calendar and TreeView), along with more streamlined controls (such as TextBox, Label, and Button), which map closely to existing HTML tags. In the latter case, the HTML server-side control and the ASP.NET web control variants provide similar functionality, although the web controls tend to expose a more standardized, streamlined interface. This makes the web controls easy to learn, and it also means they’re a natural fit for Windows developers moving to the world of the Web, because many of the property names are similar to the corresponding Windows controls.

ASP.NET Fundamentals: ASP.NET is Hosted by the Common Language Runtime

ASP.NET Fundamentals: ASP.NET is Hosted by the Common Language Runtime

Perhaps the most important aspect of the ASP.NET engine is that it runs inside the runtime environment of the CLR. The whole of the .NET Framework—that is, all namespaces, applications, and classes—is referred to as managed code. Though a full-blown investigation of the CLR is beyond the scope of this blog post, some of the benefits are as follows:

Automatic memory management and garbage collection: Every time your application instantiates a reference-type object, the CLR allocates space on the managed heap for that object. However, you never need to clear this memory manually. As soon as your reference to an object goes out of scope (or your application ends), the object becomes available for garbage collection. The garbage collector runs periodically inside the CLR, automatically reclaiming unused memory for inaccessible objects. This model saves you from the low-level complexities of C++ memory handling and from the quirkiness of COM reference counting.

Type safety: When you compile an application, .NET adds information to your assembly that indicates details such as the available classes, their members, their data types, and so on. As a result, other applications can use them without requiring additional support files, and the compiler can verify that every call is valid at runtime. This extra layer of safety completely obliterates whole categories of low-level errors.

Extensible metadata: The information about classes and members is only one of the types of metadata that .NET stores in a compiled assembly. Metadata describes your code and allows you to provide additional information to the runtime or other services. For example, this metadata might tell a debugger how to trace your code, or it might tell Visual Studio how to display a custom control at design time. You could also use metadata to enable other runtime services, such as transactions or object pooling.

Structured error handling: .NET languages offer structured exception handling, which allows you to organize your error-handling code logically and concisely. You can create separate blocks to deal with different types of errors. You can also nest exception handlers multiple layers deep. 

Multithreading: The CLR provides a pool of threads that various classes can use. For example, you can call methods, read files, or communicate with web services asynchronously, without needing to explicitly create new threads.

ASP.NET Fundamentals: ASP.NET is Multi-language

ASP.NET Fundamentals: ASP.NET is Multi-language

ASP.NET is Multi-language. Though you’ll probably opt to use one language over another when you develop an application, that choice won’t determine what you can accomplish with your web applications. That’s because no matter what language you use, the code is compiled into IL.

IL is a stepping stone for every managed application. (A managed application is any application that’s written for .NET and executes inside the managed environment of the CLR.) In a sense, IL is the language of .NET, and it’s the only language that the CLR recognizes.

To understand IL, it helps to consider a simple example. Take a look at this code written in C#:

using System;
namespace HelloWorld
{
  public class TestClass
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Hello World");
    }
  }
}

This code shows the most basic application that’s possible in .NET—a simple command-line utility that displays a single, predictable message on the console window. Now look at it from a different perspective. Here’s the IL code for the Main() method: 

.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 13 (0xd)
.maxstack 8
IL_0000: nop
IL_0001: ldstr "Hello World"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
} // end of method TestClass::Main

It’s easy enough to look at the IL for any compiled .NET application. You simply need to run the IL Disassembler, which is installed with Visual Studio and the .NET SDK (software development kit). Look for the file ildasm.exe in a directory like c:\Program Files\Microsoft SDKs\Windows\v7.0A\bin. Run ildasm.exe, and then use the File ➤ Open command, and select any DLL or EXE that was created with .NET.

Tip: For even more disassembling power, check out the remarkable (and free) Reflector tool at http://www.red-gate.com/products/reflector. With the help of community-created add-ins, you can use Reflector to diagram, analyze, and decompile the IL code in any assembly.

If you’re patient and a little logical, you can deconstruct the IL code fairly easily and figure out what’s happening. The fact that IL is so easy to disassemble can raise privacy and code control issues, but these issues usually aren’t of any concern to ASP.NET developers. That’s because all ASP.NET code is stored and executed on the server. Because the client never receives the compiled code file, the client has no opportunity to decompile it. If it is a concern, consider using an obfuscator that scrambles code to try to make it more difficult to understand. (For example, an obfuscator might rename all variables to have generic, meaningless names such as f__a__234.) Visual Studio includes a scaled-down version of one popular obfuscator, called Dotfuscator.

The following code shows the same console application in Visual Basic code:

Imports System
Namespace HelloWorld
Public Class TestClass
Shared Sub Main(args() As String)
Console.WriteLine("Hello World")
End Sub
End Class
End Namespace

If you compile this application and look at the IL code, you’ll find that it’s nearly identical to the IL code generated from the C# version. Although different compilers can sometimes introduce their own optimizations, as a general rule of thumb no .NET language outperforms any other .NET language, because they all share the same common infrastructure. This infrastructure is formalized in the CLS (Common Language Specification), which is described in the following sidebar, entitled “The Common Language Specification."

It’s worth noting that IL has been adopted as an ECMA and ISO standard. This adoption allows the adoption of other common language frameworks on other platforms. The Mono project at http://www.mono-project.com is the best example of such a project.

The Common Language Specification

The CLR expects all objects to adhere to a specific set of rules so that they can interact. The CLS is this set of rules.

The CLS defines many laws that all languages must follow, such as primitive types, method overloading, and so on. Any compiler that generates IL code to be executed in the CLR must adhere to all rules governed within the CLS. The CLS gives developers, vendors, and software manufacturers the opportunity to work within a common set of specifications for languages, compilers, and data types. You can find a list of a large number of CLS-compliant languages at http://dotnetpowered.com/languages.aspx.

Given these criteria, the creation of a language compiler that generates true CLR-compliant code can be complex. Nevertheless, compilers can exist for virtually any language, and chances are that there may eventually be one for just about every language you’d ever want to use. Imagine—mainframe programmers who loved COBOL in its heyday can now use their knowledge base to create web applications!

ASP.NET Fundamentals: ASP.NET is Compiled, Not Interpreted Language

ASP.NET Fundamentals: ASP.NET is Compiled, Not Interpreted Language

ASP.NET applications, like all .NET applications, are always compiled. In fact, it’s impossible to execute C# or Visual Basic code without it being compiled first. 

.NET applications actually go through two stages of compilation. In the first stage, the C# code you write is compiled into an intermediate language called Microsoft Intermediate Language (MSIL), or just IL. This first step is the fundamental reason that .NET can be language-interdependent. Essentially, all .NET languages (including C#, Visual Basic, and many more) are compiled into virtually identical IL code. This first compilation step may happen automatically when the page is first requested, or you can perform it in advance (a process known as pre-compiling). The compiled file with IL code is an assembly. 

The second level of compilation happens just before the page is actually executed. At this point, the IL code is compiled into low-level native machine code. This stage is known as just-in-time (JIT) compilation, and it takes place in the same way for all .NET applications (including Windows applications, for example).

.NET compilation is decoupled into two steps in order to offer developers the most convenience and the best portability. Before a compiler can create low-level machine code, it needs to know what type of operating system and hardware platform the application will run on (for example, 32-bit or 64-bit Windows). By having two compile stages, you can create a compiled assembly with .NET code and still distribute this to more than one platform.

Of course, JIT compilation probably wouldn’t be that useful if it needed to be performed every time a user requested a web page from your site. Fortunately, ASP.NET applications don’t need to be compiled every time a web page is requested. Instead, the IL code is created once and regenerated only when the source is modified. Similarly, the native machine code files are cached in a system directory that has a path like c:\Windows\Microsoft.NET\Framework\[Version]\Temporary ASP.NET Files.

The actual point where your code is compiled to IL depends on how you’re creating and deploying your web application. If you’re building a web project in Visual Studio, the code is compiled to IL when you compile your project. But if you’re building a lighter-weight project less website, the code for each page is compiled the first time you request that page. Either way, the code goes through its second compilation step (from IL to machine code) the first time it’s executed.

ASP.NET also includes pre-compilation tools that you can use to compile your application right down to machine code once you’ve deployed it to the production web server. This allows you to avoid the overhead of first-time compilation when you deploy a finished application (and prevent other people from tampering with your code).

Sunday, December 22, 2013

10 Top, Free and Open Source Project Management Software Solutions and Services

10 Top, Free and Open Source Project Management Software Solutions and Services

Project Management Software Solutions play vital role in any business. There are plenty of free and open source project management software solutions and services available in the market. We have picked some widely accepted free and open source project management software solutions like Readmine, Codendi, ProjectPier, Open Atrium, PlanCake, KForge, Open Workbench, Project HQ, Collabtive and Feng Office. These free and open source project management software are equipped with a lot of exciting features like Multiple projects support, Flexible role based access control, Flexible issue tracking system, Gantt chart and calendar, News, documents & files management, Feeds & email notifications, Per project wiki, Per project forums, Time tracking, Custom fields for issues, time-entries, projects and users, Issue creation via email, Multiple LDAP authentication support,  User self-registration support, Multilanguage support, Multiple databases support etc. Lets have a look at these free and open source project management software:

1. Readmine

Redmine is a flexible project management web application. It is written using Ruby on Rails framework and it is cross-platform and cross-database. Redmine is open source and released under the terms of the GNU General Public License v2 (GPL).

Redmine contains a lot of functionality geared heavily towards developers. It’s really powerful tool but may take some time to getting used to. It supports multiple projects, role-based access and permissions, Gantt charting and a calendar. Redmine also supports wiki and forums assigned on a project level to help centralize information and communication

Redmine is equipped with many exciting features like Multiple projects support, Flexible role based access control, Flexible issue tracking system, Gantt chart and calendar, News, documents & files management, Feeds & email notifications, Per project wiki, Per project forums, Time tracking, Custom fields for issues, time-entries, projects and users, SCM integration (SVN, CVS, Git, Mercurial, Bazaar and Darcs), Issue creation via email, Multiple LDAP authentication support,  User self-registration support, Multilanguage support, Multiple databases support etc.

2. Codendi

Codendi is an open-source collaborative development platform offered by Xerox. From only one interface, it gathers, all the needed tools for software development teams: management and versioning of code, bugs, requirements, documents, reporting, tests etc. It is mainly used for managing software project processes. It is based on open-source standards, Codendi is the collaborative platform for software project management proposed by Xerox.

At the origin, Codendi is a fork from Sourceforge.net. Codendi is based on an LAMP architecture (Linux, Apache, MySQL, PHP) and offers and SOAP Web Services interface.

3. ProjectPier

ProjectPier is a Free, Open-Source, self-hosted PHP application for managing tasks, projects and teams through an intuitive web interface. ProjectPier will help your organization communicate, collaborate and get things done. Its function is similar to commercial groupware/project management products, but allows the freedom and scalability of self-hosting.

ProjectPier is a cross-platform application that is written using PHP, Javascript and requires a MySQL database backend. ProjectPier is freely available and licensed under the Gnu Affero General Public License (AGPL), which means you're welcome to use and modify the software as long as any changes are distributed under the same license restrictions.

4. Open Atrium

Open Atrium is an open source platform designed specifically to make great teams communicate better. An intranet in a box with: a blog, a wiki, a calendar, a to do list, a shoutbox, and a dashboard to manage it all. Let’s not forget that it’s also completely customizable.

Open Atrium is a part of a growing open source offering helping commercial companies, international organizations, federal governments, and online publishers grow their enterprise platforms with excellent team communications tools. Open Atrium is powered by an active community, and it’s working. Open Atrium is now being translated into more than twenty languages and several hundred people are growing its base of features.

Atrium’s theme is built using Bootstrap, a front-end framework using responsive CSS that allows content to be ready for multiple screen sizes, out of the box. Over two dozen cross-browser, responsive layouts and several responsive image styles are included to aid in site building and allow your site to work seamlessly on mobile devices.

5. PlanCake

PlanCake is a open source task management system. It allows you to export all your data but you can even download the entire PlanCake system and run it on your own server.

PlanCake is an Open-Source and GTD-Friendly Task Management Tool PlanCake has an inbox, a to-do list, and a calendar by default. You can create new lists to sort and separate contexts and projects. The calendar aggregates all your date-based to-do list items and has a great feature where you can suppress repetitive tasks so they will be shown only on the closest active day and not cluttering up your calendar view for future days and weeks.

6. KForge

KForge is a freely available web-based open source project management application suitable for knowledge management and software projects. It uses a plug-in architecture, so features and functionality can be easily swapped out as needed. The software is free, but its installation and management require some technical ability. Its open source license allows for modifications to be made, which is useful for software development shops.

The modular architecture allows for a variety of source control systems (Git, Subversion), project tracking modules, Wiki and mailing list functionality, as well as popular CMS applications like WordPress and Joomla. This power and flexibility makes KForge’s relative installation difficulty worthwhile, but it is an application more suitable for software development shops.

The robust KForge community is one of the main strengths of the software. Businesses will benefit from being able to switch parts of the software to fit their workflows and preferred applications. New plug-ins are being developed and a mailing list exists; subscribe to learn tricks of the application and get usage questions answered.

7. Open Workbench

For businesses looking for an open source alternative to Microsoft Project, Open Workbench is an excellent option. It provides a standard desktop application look and feel, with a Gantt Chart view that should make any users of Microsoft’s tool feel right at home. CA Technologies also provides a version, but they require users looking for full enterprise features to subscribe to their own project management system, CA Clarity PPM.

While the software’s open source code base is older, it still allows businesses to benefit from being able to get a handle on their project workloads. For smaller businesses wanting to manage projects without all the other features of Redmine and KForge, Open Workbench remains a good option.

No matter the size of your business, these three open source project management tools are worth further exploration to see which application provides the best fit. All three provide the tangible business benefits gained from on-time, successful project completion.

8. Project HQ: Inspired on BaseCamp

Project HQ is next on the list of open source and online project management software. Project HQ is interesting because it uses only open source technologies while being open source itself. Project HQ is independent of closed source databases such as MySQL and instead replaces it with SQLAlchemy, an interesting endeavor, to say the least. The software performs well and seems to take inspiration from Basecamp and ActiveCollab, so it’s simplistic but still reasonably powerful.

9. Collabtive: Another Basecamp Alternative

Collabtive is a project that was started in November of 2007 as an open source web based project management software. Their goal with Collabtive is to offer an alternative to ActiveCollab and Basecamp, which they do a reasonable job at. While the software isn’t quite as powerful as ActiveCollab, it’s just as intuitive and simple to use as Basecamp.

10. Feng Office: All-Around Project Collaboration Software

Feng Office is the final open source project management software is more focused on general project development. Feng Office features easy contact management, time management, project management and even document management. Everything can be edited online, or downloaded/uploaded at a later time. Feng Office is not tailored to any specific job type; it’s the all-around project collaboration software that’s easy to use as well as intuitive. Well worth giving a shot if nothing else suits your project type.

Friday, December 20, 2013

How to allow HTML Textbox to accept Numbers only using Javascript?

How to allow HTML Textbox to accept Numbers only using Javascript?

While web development, you often encounter the need of functionality where your textboxes should be filled with numbers only.

For example, you want your users to fill the quantity of anything, ID (if it is composed on integers only), price of anything (excluding decimal) etc. In short, you want only numbers plus some keys like backspace, delete. left and right arrow to be typed in the textbox. You can use javascript to restrict your users to fill only numbers in the textbox. It is very simple. On the KeyPress event of any HTML text, just call a simple javascript function which checks the keycodes for the numbers and on the basis of keycodes, it returns true or false. Here is how?

HTML Text

<input type="text" id="txtSample" name="txtSample" onkeypress="return CheckNumeric(event)" />

Javascript 

function CheckNumeric(event)
{
       var key = window.event ? event.keyCode : event.which;

        //Check for backspace, delete, left arrow and right arrow keys

if (event.keyCode == 8  || event.keyCode == 46 ||  
           event.keyCode == 37 || event.keyCode == 39) 
{
return true;
}

        //All other keys excluding numeric keys 

else if ( key < 48 || key > 57 ) 
{
return false;
}

else return true; //Numeric keys from 0 to 9
};

Thursday, December 19, 2013

Clarizen vs Genius Project vs AtTask: Project Management Software Solutions Comparison

Clarizen vs Genius Project vs AtTask: Project Management Software Solutions Comparison

Following is the comparison between Clarizen, Genius Project and AtTask, the most famous and widely used project management software solutions and services. We have deeply looked into their functionality, ease of use, customer support, resource and service management, cost etc. These all project management software solutions (Clarizen, Genius Project, AtTask), provide good ability to manage team member's time and tasks, project progress, issues, bugs, requests, budgets, schedules, reports, resources, documents, time tracking, timesheets, project expenses etc. In short, Clarizen, Genius Project and AtTask provide good project management services to project managers to ease their lives and reduce their hardwork and expensive time. Lets have a look at the comparison of Clarizen, Genius Project and AtTask, the project management software solutions in detail.

Clarizen Project Management Software

Clarizen is on our top spot in this year's rankings by providing all the project management and collaboration tools that a company may need, without using up any of the company's IT resources. The tools are hosted entirely in the cloud and do not require an IT team to manage the system or a server to host it.

Clarizen includes all project management tools, such as the ability to manage requests, issues and bugs, budgets, schedules, reports, resources, documents, time tracking and expenses. It also includes dozens of customizable reports, free email-only accounts for clients and direct integration with Salesforce for sales reporting. In addition, team members can monitor projects and submit time and expenses remotely from an iPhone or Android device. New to this year's version is the ability to integrate with QuickBooks and Intact to speed up billing processes.

Resource Management: The Clarizen tools manage a variety of resources, including team members, externals and generic resources. They also provide project managers with resource-load simulators, interactive load views, scheduling tools and advanced resource filters. Additionally, the tools manage numerous resource fields, including groups and skills, languages and time zones, job titles, and addresses. To help project managers track a variety of resources, the service provides a range of account types, including time and expense users and email-only accounts.

Ease of Use: Clarizen's project management tool is simple to use for both managers and team members. To start a project, managers can import one from Microsoft Project or use pre-configured templates. These templates include those that are suitable for professional services, IT, customer roll out, SCRUM and new product introduction. To help users, Clarizen provides success kits, video tutorials, wiki topics, how-to articles and a forum.

Integration and Professional Services: The Clarizen project management tools are compatible with products commonly used by smaller teams, such as iCal and Google Drive, as well as popular services such as Salesforce, Zendesk, Microsoft Project and Outlook. Clarizen also offers mobile apps for both iPhone and Android mobile devices.

Genius Project 

Genius Project is on our number 2 spot for its flexibility, enterprise-level social media tools and the ability to support a variety of deployment options and generate more than 500 reports. The software helps managers and teams manage projects, resources, tasks, requests, time and expense tracking, budgets, documents, requests and issues, and invoices. It can also create workflows, generate integrations and manage help desk requests. New to this year's version are an updated interface, customizable views and an improved social media platform. Genius Project is available as a Software-as-a-Service, which makes it accessible anywhere from any device, including PCs and Macs.

Resource Management: Genius Project manages in-house, external, generic and physical resources. It includes a complex resource search/filter tool that can manage skill sets, availability, location, time zones and percent of availability. In addition, Genius Project can manage day-off requests, absences and time off.

Ease of Use: Genius Project is simple to use and offers project managers tools to help easily replicate processes and projects. Managers can create projects from scratch or use pre-existing templates. To help new users, Genius Inside provides flash tutorials, visual indicators, white papers, webcasts and FAQs.

Integration and Professional Services: Genius Project works with a variety of software types, including Microsoft Project, Salesforce and accounting software. Integrated email functions work with Outlook, Gmail, Yahoo, Hotmail and any other email protocol, including LDAP. The installed version is compatible with most systems, including ERP and CRM systems.

AtTask Project Management Software

AtTask earned its high marks in part for focusing on collaboration and real-time visibility. AtTask has all basic project management modules, including budgeting, issue tracking, request management, interactive Gantt charts, reporting and advanced task management. Those with full licenses get access to every tool, including capacity planning, portfolio alignment, workflow and approvals management, and cost tracking. The tools can also prioritize work across projects, manage requests, manage backlogs and create storyboards. AtTask also supports Waterfall, hybrid and proprietary methodologies.

Resource Management: AtTask's capacity planner allows managers to add a project to a schedule and calculate if it is feasible to accomplish during a set period. This feature compares the resources a manager has against the resources the project requires. Managers can also drag and drop the project to a different time, calculating the best time frame to proceed with the project. The TeamHome section keeps track of team member accomplishments and successes, which makes it easy for managers to track team members' progress, without hounding them for status reports.

Ease of Use: The AtTask tools are simple to use, especially for team members. The program includes numerous one-click options, single-page edits, drag-and-drop tools, simple-to-understand status views and merge-able calendars. AtTask also includes pre-configured solutions for enterprise work management, marketing organization and IT teams.

Integration and Professional Services: AtTask is compatible with a variety of online storage services, including Box, Dropbox and Google Docs. It also works with Salesforce, Jira and ProofHQ. AtTask also offers mobile apps for iOS and Android devices.