Tuesday 4 February 2014

Open Source Technology

Open source technology is a growing trend in GIS, but what is it? Open source software is software in which the source code used to create the program is freely available for the public to view, edit, and redistribute. Any type of software program can be open source, including operating systems (e.g., Linux), databases (e.g., PostgreSQL), applications (e.g., OpenOffice.org), games, and even programming languages (e.g., Python).
Non-open source software is called closed source or proprietary software.Open source software is identified by the type of license it is released under. These licenses include the Apache 2.0 license, the Microsoft Public License, and the GNU General Public License. While there are some variations, most open source licenses require that the source code be freely available and users are free to modify the source code and redistribute the software and derived works.
The open source license encourages a shared community approach to the development, extension, and patching of open source software. Most open source projects have a dedicated group that moderates and directs the core software development and ensures that needed new features are being developed, bugs are being fixed, and the supporting documentation remains current. Sometimes an open source project will "fork," meaning a group of developers will lead the development of the software that is independent of the original project. Improvements in the "fork" project could either become incorporated into the core project or evolve into a completely new project.

Isn't Open Source Free?

A common misconception is that open source software is free, meaning without cost. While often true, that is not always the case. Open source only requires that a program's source code be freely available; the program itself may still be sold commercially. So what's the difference between a program's source code and the program itself?
see enlargement
A hybrid relationship.
Developers create a software program by writing its source code using a computer programming language, such as C++ or Java. The source code is a series of commands, processes, and interfaces that tell the computer program how to behave. A computer cannot look at source code and know how to run the program. The source code needs to be translated from the developer's programming language to a machine binary language (0s and 1s) that the computer can read.
The developer does this translation by running the source code through another program called a compiler. The compiler translates the source code into the binary language that the computer can read and execute. Compilers not only make it possible for computers to run the program but also make the programs more efficient by optimizing the file sizes and checking for errors. Since it is often difficult to reverse the translation, compiling helps protect the integrity of the source code.

Open Source vs. Open Specifications

Another common misconception about open source technology is that it is completely open and can freely read and write any data format. However, that is not the case. Formats, specifications, reference models, and procedures that help establish interoperability between programs and devices are called open specifications. PNG, RSS, HTML, and Esri's shapefile are all examples of openly published specifications.

Some Examples of Open Source (FREE) Software

Some examples of Open Source Software

Accounting:

Anti-virus:

Databases:

  • LDAP
  • MySQL (database)
  • PostgreSQL (relational database with ability to do stored procedures)

Knowledge Management:

Domain Name Servers:

Telephony:

E-mail Servers:

File Servers:

Medical Software:

Other Valuable Systems (servers & desktops):

  • Apache (web server)
  • CentOS (Linux distribution from Red Hat's development efforts)
  • Fedora (Linux destop system)
  • JBoss (J2EE server for Enterprise Java Development)
  • Slackware (Linux distribution)
  • Tomcat (Java servlet container)
  • Ubuntu (a Linux desktop operating system)
  • Zope (Content management system and portal)

Productivity Software:

  • Evolution (calendar, contact manager and e-mail client)
  • Firefox (web browser)
  • Gimp (image manipulation program)
  • Open Office (word processor, spreadsheet, etc.)
  • Thunderbird (e-mail client, news aggregator, etc.)

Programming Languages:

C, C++, Mono, PHP, Python, Perl, Ruby, TcL

Spam Filtering:

Routing/Networking:

Virtualization:

This is striclty a small example of some open source software. This is a brief list of a few products which are open sourced to the world and is by no means: a) a complete list, b) endorsed by Net Easy, c) used by Net Easy. Net Easy has no liability in such list of products.
You're welcome to contact us to have any other products listed here along with new catagories. However, Net Easy reserve the right to decline such requests as we deem ncessary and we're not in the business to maintain a list of repositories or mirrors of software.

Monday 3 February 2014

Web Services : SOAP vs REST

WEB SERVICES

A Web service, in very broad terms, is a method of communication between two applications or electronic devices over the World Wide Web (WWW). Web services are of two kinds: Simple Object Access Protocol (SOAP) and Representational State Transfer (REST).


SOAP OR REST ??

This is of course a very controversial topic, but at the same time, most new services are REST for a number of reasons. I won't cover the differences between the two (as that is well documented) but more the reasons I think you'd build a new service, today (2012) using REST:
  • REST is much simpler, basically just building on top of HTTP
  • You can test (and debug) REST services using a web browser or something like curl or httpie. Yes this is technically possible with SOAP as well, but you have to somewhat understand the SOAP schema.
  • Similarly, you can build a REST client as long as you have a way to access HTTP. SOAP requires a SOAP-capable library
  • REST is more of a style and builds on top of HTTP, whereas SOAP is an entire protocol on top of HTTP (which is also a protocol)
  • SOAP ends up with crazy extension protocols like WS-Security, WS-Encryption (which, essentially, are incredibly complex designed-by-committee solutions to problems the rest of the internet solved for HTTP a couple decades ago)
If you look around at some of the major APIs on the internet (eg Google, Facebook, Twitter, etc) you'll find a lot of REST, and little to no SOAP. Those that do have SOAP interfaces are deprecating or dropping them completely, because there's very little reason to stick with it any more.
In fact, many of the big services are going a step further and only offering their REST services with JSON formatting, as opposed to XML or both, because like REST over SOAP, JSON has a lot of advantages in terms of size and simplicity over XML that it doesn't make much sense to continue supporting XML.

There are also almost no drawbacks to REST compared to SOAP.
About the only practical consideration I can think of is from a client perspective. With SOAP (because of WSDL, assuming you produce one) you can point a SOAP-capable IDE at the service (such as VisualStudio) and it will generate a native client proxy API based on the remote service. This is somewhat nice in terms of getting up and running quickly, but has its own set of drawbacks: it forces you to use the objects defined in the service (whereas with REST, you can use your own object definitions as long as the data maps in), and depending on how the remote service handles versioning (or not) and how you use it, you may end up having to update major chunks of your app because of something as simple as a naming change.
From the server perspective, I really can't see any technical benefits to choosing SOAP over REST whatsoever.
TL;DR: SOAP is not necessarily bad, it's just that REST is better.
This article quickly compares one with the other -
RESTSOAP
Assumes a point-to-point communication model–not usable for distributed computing environment where message may go through one or more intermediariesDesigned to handle distributed computing environments
Minimal tooling/middleware is necessary. Only HTTP support is requiredRequires significant tooling/middleware support
URL typically references the resource being accessed/deleted/updatedThe content of the message typically decides the operation e.g. doc-literal services
Not reliable – HTTP DELETE can return OK status even if a resource is not deletedReliable
Formal description standards not in widespread use. WSDL 1.2, WADL are candidates.Well defined mechanism for describing the interface e.g. WSDL+XSD, WS-Policy
Better suited for point-to-point or where the intermediary does not play a significant roleWell suited for intermediated services
No constraints on the payloadPayload must comply with the SOAP schema
Only the most well established standards apply e.g. HTTP, SSL. No established standards for other aspects.  DELETE and PUT methods often disabled by firewalls, leads to security complexity.A large number of supporting standards for security, reliability, transactions.
Built-in error handling (faults)No error handling
Tied to the HTTP transport modelBoth SMTP and HTTP are valid application layerprotocols used as Transportfor SOAP
Less verboseMore verbose


Thursday 16 January 2014

How to Set a Custom Logon Screen Background on Windows 7

image
Windows 7 makes it possible to change the welcome screen that appears when you start your computer without any third-party software, but this setting is well hidden. You can set any image you like as your background.
This setting is intended for original equipment manufacturers (OEMs) to customize their systems, but there’s nothing stopping you from using it yourself. All you have to do is change a single registry value and put an image file in the correct location.

Enabling Custom Backgrounds

This feature is disabled by default, so you’ll have to enable it from the Registry Editor. You can also use the Group Policy Editor if you have a Professional version of Windows – scroll down a bit for the Group Policy Editor method.
Launch the Registry Editor by typing regedit into the search box in the Start menu and pressing Enter.

In the Registry Editor, navigate to the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background

You’ll see an DWORD value named OEMBackground. If you don’t see it, right-click in the right pane, point to the New submenu and create a new DWORD value with this name.
Double-click the OEMBackground value and set its value to 1.

Note that selecting a new theme in the Appearance and Personalization window will “unset” this registry value. Selecting a theme will change the value of the key to the value stored in the theme’s .ini file, which is probably 0 – if you change your theme, you’ll have to perform this registry tweak again.

Changing the setting in group policy will allow it to persist even when you change your theme, but the Group Policy Editor is only available in Professional editions of Windows.
If you have access to the Group Policy Editor, launch gpedit.msc from the Start menu.

Navigate to the following section in the Group Policy Editor window:
Computer Configuration\Administrative Templates\System\Logon

You’ll find a setting named “Always use custom login background.” Double-click it and set it to Enabled.

Setting An Image

Your image file must be less than 256 KB in size. It’s also a good idea to use an image file that matches the resolution of your monitor, so it won’t look stretched.
Windows looks for the custom logon screen background image in the following directory:
C:\Windows\System32\oobe\info\backgrounds
By default, the info and backgrounds folders don’t exist. Navigate to the C:\Windows\System32\oobe folder and create them yourself by right-clicking inside the folder, pointing to New, and selecting New Folder.

Copy your desired background image to the backgrounds folder and name it backgroundDefault.jpg.

(I can see the inevitable question coming in the comments, so if you like this wallpaper image, you can get it here.)
The change will take effect immediately – no system reboot required. The first time you log out or lock your screen (try the WinKey-L keyboard shortcut), you’ll see your new background.

Third-Party Tools

You don’t have to do this by hand. There are a variety of third-party tools that automate this process for you, like Windows Logon Background Changer, which we’ve covered in the past. Windows Logon Background Changer and other utilities just change this registry value and put the image file in the correct location for you.


To get the default logon screen back, just delete the backgroundDefault.jpg file. Windows will use the default background if no custom background image is available.