May 27, 2013

Few server-side JavaScript libraries

Server-side JavaScript means that the server portion of a web application is written in JavaScript.

Below are few JavaScript libraries:

Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users. It is embedded in J2SE 6 as the default Java scripting engine.

JavaScript is a powerful object oriented language with some of the fastest dynamic language interpreters around. The official JavaScript specification defines APIs for some objects that are useful for building browser-based applications. However, the spec does not define a standard library that is useful for building a broader range of applications.
You can use JavaScript to write:
  • ·         Server-side JavaScript applications
  • ·         Command line tools
  • ·         Desktop GUI-based applications
  • ·         Hybrid applications (Titanium, Adobe AIR)


Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms. It's care-free realtime 100% in JavaScript.

Ejscript™ is a compact, fast and powerful implementation of JavaScript. It fully complies with the ECMAScript Edition 3 specification, and adds enhancements such as modules, class declarations, optional typing, and a rich system library.

The Ejscript Web framework has a Model/View/Controller (MVC) paradigm and supports SQL databases with an integrated ORM layer. It has a library of Ajax view controls, templating engine, automatic validations and integrated jQuery support. It is the ideal language for rapid development of Server-Side JavaScript applications.



May 24, 2013

How To Install Multiple Bootable Operating Systems on One USB Stick


Even though I am not interested to boot multiple OS from USB but good to know about this option.

MultiBootUSB is available on SourceForge and appears to be a pretty popular program for just this kind of task. The MultiBootUSB software is also a portable application, meaning you simply put the MultiBootUSB-6.4.1.exe file onto your USB drive and run it all from the USB drive. No need to mess around installing it on your computer. This gives you a great deal of flexibility, should you want to change things up but you aren’t at your home or office computer.

May 23, 2013

C# 5.0 Features


New Features in C#.Net 5.0

1. Asynchronous functions (Async and Await): Using Async and Await, you can use resources in the .NET Framework, to create an asynchronous method as easily as you create a synchronous method.



Asynchronous methods are the methods that you define using async and await.



2. Caller Information: Caller Information attributes provide the information about the caller to a method. You can obtain the file path of the source code, the line number in the source code, and the member name of the caller. Caller Information helps us in tracing, debugging, and creating diagnostic tools.



3. Windows Runtime Support: C# and .NET now have deep integration with the Windows Runtime. C# project can compiled into a WinMD file and then referenced from a HTML/JavaScript project. WinRT’s flavor of COM uses the same metadata format used by the Common Language Runtime. This information is stored in WINMD files that show the structure, though not the implementation, of all the public classes. Windows Runtime returns an HRESULT instead of throwing an exception. For well-known HRESULT values, the corresponding exception is thrown, otherwise a COMException is used.



4. Compiler APIs: This feature is supposed to come after C# 5.0 – the APIs will expose whatever knowledge the compiler has about the code to the IDE and the developers, through Syntax Tree APIs, Symbol APIs, Binding and Flow analysis APIs and Emit APIs.


References:
http://msdn.microsoft.com/en-us/library/hh156499.aspx


Big List of JavaScript, CSS, and HTML Development Tools, Libraries, Projects, and Books

The Big List of JavaScript, CSS, and HTML Development Tools, Libraries, Projects, and Books - Rey Bango

This article provides lot of tools and libraries. Happy Learning :)

How to find if .Net Assembly was built for x86 or x64

How to find if .Net Assembly was built for x86 or x64?


One can use CorFlags.exe tool to find whether .Net assembly was built for x86 or x64. As per Microsoft, CorFlags Conversion tool allows you to configure the CorFlags section of the header of a portable executable image (assembly).


Below is the sample command:

corflags.exe Oracle.DataAccess.dll

You need to execute this command in Visual Studio Command Prompt.



May 22, 2013

May 21, 2013

How Browsers Work: Behind the scenes of modern web browsers


Web browsers are probably the most widely used software. In this primer, above link  will explain how they work behind the scenes. We will see what happens when you type google.com in the address bar until you see the Google page on the browser screen.

Visual Studio 2010 UML Design Pattern Toolbox Items Extension


The toolbox items extension gives you some extra toolbox items that cover the majority of the core Gang of Four design patterns. Once installed, if you open a UML class diagram you should see the items under Structural, Creational and Behavioural Patterns.

JavaScript Frameworks

Few JavaScript Frameworks:
  • Backbone.js: Provides models with key-value binding and custom events, 
  • collections, and connects it all to your existing API over a RESTful JSON interface.
  • AngularJS: A toolset based on extending the HTML vocabulary for your application.
  • Ember.js: Provides template written in the Handlebars templating language, views, controllers, models and a router.
  • Knockout: Aims to simplify JavaScript UIs by applying the Model-View-View Model (MVVM) pattern.
  • Agility.js: Aims to let developers write maintainable and reusable browser code without the verbose or infrastructural overhead found in other MVC libraries.
  • CanJS: Focuses on striking a balance between size, ease of use, safety, speed and flexibility.
  • Spine: A lightweight framework that strives to have the most friendly 
  • documentation for any JavaScript framework available.
  • Maria: Based on the original MVC flavor as it was used in Smalltalk - aka "the Gang of Four MVC".
  • ExtJS: Amongst other things offers plugin-free charting, and modern UI widgets.
  • Sammy.js: A small JavaScript framework developed to provide a basic structure for developing JavaScript applications.
  • Stapes.js: A tiny framework that aims to be easy to fit in an existing codebase, and because of its size it's suitable for mobile development.
  • Epitome: Epitome is a MVC* (MVP) framework for MooTools.
  • soma.js: Tries help developers to write loosely-coupled applications to increase scalability and maintainability.
  • PlastronJS: MVC framework for Closure Library and Closure Compiler.
  • rAppid.js: Lets you encapsulate complexity into components which can be easy used like HTML elements in your application.
  • Serenade.js: Tries to follow the ideas of classical MVC than competing frameworks.
  • Kendo UI: Combines jQuery-based widgets, an MVVM framework, themes, templates, and more.

SOLID Principles




What is S.O.L.I.D.? 
S.O.L.I.D. is a collection of best-practice, object-oriented design principles which can be applied to your design, allowing you to accomplish various desirable goals such as loose-coupling, 
higher maintainability, intuitive location of interesting code, etc. S.O.L.I.D. is an acronym for the following principles:

SRP: Single Responsibility Principle
THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE.
OCP: Open Closed Principle
SOFTWARE ENTITIES (CLASSES, MODULES, FUNCTIONS, ETC.) SHOULD BE OPEN FOR EXTENSION BUT CLOSED FOR MODIFICATION. 
LSP: Liskov Substitution Principle
FUNCTIONS THAT USE ... REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT.
ISP: Interface Segregation Principle
CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE
DIP: Dependency Inversion Principle
A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS
B. ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON ABSTRACTIONS