Tuesday, August 26, 2008

Class vs Struts - Dot NET - MCTS

C# struct/class Differences

struct Direct
{
//...
}
class InDirect
{
//...
}

Events are locked?

Events declared in a class have their += and -= access automatically locked via a lock(this) to make them thread safe (static events are locked on the typeof the class). Events declared in a struct do not have their += and -= access automatically locked. A lock(this) for a struct would not work since you can only lock on a reference type expression.

Exist on stack or heap?

Value type local instances are allocated on the stack. Reference type local instances are allocated on the heap.

Can cause garbage collection?

Creating a struct instance cannot cause a garbage collection (unless the constructor directly or indirectly creates a reference type instance) whereas creating a reference type instance can cause garbage collection.

Meaning of this?

In a class, this is classified as a value, and thus cannot appear on the left hand side of an assignment, or be used as a ref/out parameter. For example:

class Indirect
{
//...
public void Method(Indirect that)
{
RefParameter(ref this); // compile-time error
OutParameter(out this); // compile-time error
this = that; // compile-time error
}
//...
}
In a struct, this is classified as an out parameter in a constructor and as a ref parameter in all other function members. Thus it is possible to modify the entire structure by assigning to this or passing this as a ref/out parameter. For example:
struct Direct
{
//...
public void Reassign(Direct that)
{
RefParameter(ref this); // compiles ok
OutParameter(out this); // compiles ok
this = that; // compiles ok
}
//...
}
Furthermore, you can reassign a whole struct even when the struct contains readonly fields!
struct Direct
{
public Direct(int value)
{
Field = value;
}

public void Reassign(Direct that)
{
RefParameter(ref this); // compiles ok
OutParameter(out this); // compiles ok
this = that; // compiles ok
}

public readonly int Field;
}

class Show
{
static void Main()
{
Direct s = new Direct(42);
Console.WriteLine(s.Field); // writes 42
s.Reassign(new Direct(24));
Console.WriteLine(s.Field); // writes 24
}
}
Note however that when you call a method on a readonly value-type field, the method call is made on a copy of the field.
struct Direct
{
// as above
}

class Caller
{
public void Method()
{
Console.WriteLine(d.Field); // writes 42
d.Reassign(new Direct(24));
Console.WriteLine(d.Field); // writes 42!
}

private readonly Direct d = new Direct(42);
}

class Show
{
static void Main()
{
Caller c = new Caller();
c.Method();
}
}

Always have a default constructor?

A struct always has a built-in public default constructor.

class DefaultConstructor
{
static void Eg()
{
Direct yes = new Direct(); // always compiles ok
InDirect maybe = new InDirect(); // compiles if c'tor exists and is accessible
//...
}
}
This means that a struct is always instantiable whereas a class might not be since all its constructors could be private.
class NonInstantiable
{
private NonInstantiable() // ok
{
}
}

struct Direct
{
private Direct() // compile-time error
{
}
}

Default construction triggers static constructor?

A structs static constructor is not triggered by calling the structs default constructor. It is for a class.

struct Direct
{
static Direct()
{
Console.WriteLine("This is not written");
}
}

class NotTriggered
{
static void Main()
{
Direct local = new Direct();
}
}

Can be null?

A struct instance cannot be null.

class Nullness
{
static void Eg(Direct s, Indirect c)
{
if (s == null) ... // compile-time error
if (c == null) ... // compiles ok
}
}

Use with the as operator?

A struct type cannot be the right hand side operand of the as operator.

class Fragment
{
static void Eg(Direct s, Indirect c)
{
Direct no = s as Direct; // compile-time error
InDirect yes = c as InDirect; // compiles ok
//...
}
}

Can be locked?

A struct type expression cannot be the operand of a lock statement.

class LockStatement
{
static void Eg(Direct s, InDirect c)
{
lock(s) { ... } // compile-time error
lock(c) { ... } // compiles ok
}
}

Can have a destructor?

A struct cannot have a destructor. A destructor is just an override of object.Finalize in disguise, and structs, being value types, are not subject to garabge collection.

struct Direct
{
~Direct() {} // compile-time error
}
class InDirect
{
~InDirect() {} // compiles ok
}

And the CIL for ~Indirect() looks like this:

.method family hidebysig virtual instance void
Finalize() cil managed
{
// ...
} // end of method Indirect::Finalize

Default field layout?

The default [StructLayout] attribute (which lives in the System.Runtime.InteropServices namespace) for a struct is LayoutKind.Sequential whereas the default StructLayout for a class is LayoutKind.Auto. (And yes, despite its name you can tag a class with the StructLayout attribute.) In other words the CIL for this:

public struct Direct
{
//...
}

looks like this:

.class public sequential ansi sealed beforefieldinit Direct
extends [mscorlib]System.ValueType
{
//...
}

whereas the CIL for this:

public sealed class InDirect
{
//...
}

looks like this:

.class public auto ansi sealed beforefieldinit Indirect
extends [mscorlib]System.Object
{
//...
}

Can be a volatile field?

You can't declare a user-defined struct type as a volatile field but you can declare a user-defined class type as a volatile field.

class Bad
{
private volatile Direct field; // compile-time error
}
class Good
{
private volatile Indirect field; // compiles ok
}

Can have synchronized methods?

You can't use the [MethodImpl(MethodImplOptions.Synchronized)] attribute on methods of a struct type (if you call the method you get a runtime TypeLoadException) whereas you can use the [MethodImpl(MethodImplOptions.Synchronized)] attribute on methods of a class type.

using System.Runtime.CompilerServices;

class Indirect
{
[MethodImpl(MethodImplOptions.Synchronized)] // compiles and runs ok
public void Method()
{
//...
}
}

struct Direct
{
[MethodImpl(MethodImplOptions.Synchronized)] // compiles ok, runtime TypeLoadException
public void Method()
{
//...
}
}

Can be pointed to?

Clause 25.2 of the C# standard defines an unmanaged type as any type that isn't a reference type and doesn't contain reference-type fields at any level of nesting. That is, one of the following:

  • Any simple value type (11.1.3, eg byte, int, long, double, bool, etc).
  • Any enum type.
  • Any pointer type.
  • Any user-defined struct-type that contains fields of unmanaged types only.
You can never take the address of a instance of a type that is not unmanaged (a fixed variable 25.3).
class Bad
{
static void Main()
{
Indirect variable = new Indirect();
unsafe
{
fixed(Indirect * ptr = &variable) // compile-time error
{
//...
}
}
}
}
If you want to fix an unmanaged instance you have to do so by fixing it through an unmanaged field. For example:
class Indirect
{
public int fixHandle;
}
class Bad
{
static void Main()
{
Indirect variable = new Indirect();
unsafe
{
fixed(int * ptr = &variable.fixHandle) // compiles ok
{
//...
}
}
}
}
In contrast, you can (nearly) always take the address of an unmanaged instance.
struct Direct
{
// no reference fields at any level of nesting
}
class SimpleCase
{
static void Main()
{
Direct variable = new Direct();
unsafe
{
Direct * ptr = &variable; // compiles ok
//...
}
}
}
However, you have to take the address inside a fixed statement if the variable is moveable (subject to relocation by the garbage collector, see 25.3 and example above). Also, you can never take the address of a volatile field.

So, in summary, you can never create a pointer to a class type but you sometimes create a pointer to a struct type.

Can be stackalloc'd?

You can only use stackalloc on unmanaged types. Hence you can never use stackalloc on class types. For example:

class Indirect
{
//...
}
class Bad
{
static void Main()
{
unsafe
{
Indirect * array = stackalloc Indirect[42]; // compile-time error
//...
}
}
}
Where as you can use stackalloc on struct types that are unmanaged. For example:
struct Direct
{
// no reference fields at any level of nesting
}
class Good
{
static void Main()
{
unsafe
{
Direct * array = stackalloc Direct[42]; // compiles ok
//...
}
}
}

Can be sizeof'd?

You can only use sizeof on unmanaged types. Hence you can never use sizeof on class types. For example:

class Indirect
{
//...
}
class Bad
{
static void Main()
{
unsafe
{
int size = sizeof(Indirect); // compile-time error
//...
}
}
}
Where as you can use sizeof on struct types that are unmanaged. For example:
struct Direct
{
// no reference fields at any level of nesting
}
class Good
{
static void Main()
{
unsafe
{
int size = sizeof(Direct); // compiles ok
//...
}
}
}

How to initialize fields?

The fields of a class have a default initialization to zero/false/null. The fields of a struct have no default value.

struct Direct
{
public int Field;
}

class Indirect
{
public Indirect()
{
}
//...
public int Field;
}

class Defaults
{
static void Main()
{
Direct s;
Console.WriteLine(s.Field); // compile-time error

Indirect c = new Indirect();
Console.WriteLine(c.Field); // compiles ok
}
}

You can initialize fields in a class at their point of declaration. For example:

class Indirect
{
//...
private int field = 42;
}
You can't do this for fields in a struct. For example:
struct Direct
{
//...
private int field = 42; // compile-time error
}
Fields in a struct have to be initialized in a constructor. For example:
struct Direct
{
public Direct(int value)
{
field = value;
}
//...
private int field; // compiles ok
}
Also, the definite assignment rules of a struct are tracked on an individual field basis. This means you can bypass initialization and "assign" the fields of a struct one a time. For example:
struct Direct
{
public int X, Y;
}
class Example
{
static void Main()
{
Direct d;
d.X = 42;
Console.WriteLine(d.X); // compiles ok
Console.WriteLine(d.Y); // compile-time error
}
}

Inheritance differences?

  • a struct is implicitly sealed, a class isn't.
  • a struct can't be abstract, a class can.
  • a struct can't call : base() in its constructor whereas a class with no explicit base class can.
  • a struct can't extend another class, a class can.
  • a struct can't declare protected members (eg fields, nested types) a class can.
  • a struct can't declare abstract function members, an abstract class can.
  • a struct can't declare virtual function members, a class can.
  • a struct can't declare sealed function members, a class can.
  • a struct can't declare override function members, a class can. The one exception to this rule is that a struct can override the virtual methods of System.Object, viz, Equals(), and GetHashCode(), and ToString().

Equals behavior?

classes inherit Object.Equals which implements identity equality whereas structs inherit ValueType.Equals which implements value equality.

using System.Diagnostics;

struct Direct
{
public Direct(int value)
{
field = value;
}
private int field;
}

class Indirect
{
public Indirect(int value)
{
field = value;
}
private int field;
}

class EqualsBehavior
{
static void Main()
{
Direct s1 = new Direct(42);
Direct s2 = new Direct(42);

Indirect c1 = new Indirect(42);
Indirect c2 = new Indirect(42);

bool structEquality = s1.Equals(s2);
bool classIdentity = !c1.Equals(c2);

Debug.Assert(structEquality);
Debug.Assert(classIdentity);

}
}
Overriding Equals for structs should be faster because it can avoid reflection and boxing.
struct Direct
{
public Direct(int value)
{
field = value;
}

public override bool Equals(object other)
{
return other is Direct && Equals((Direct)other);
}

public static bool operator==(Direct lhs, Direct rhs)
{
return lhs.Equals(rhs);
}

//...

private bool Equals(Direct other)
{
return field == other.field;
}

private int field;
}

Thursday, August 14, 2008

List of Free / Open Source ASP.NET Web Applications

List of Free / Open Source ASP.NET Web Applications

As a big ASP.NET advocate, I'm loving the recent surge in open source / free ASP.NET applications that are hitting the web - And what's more because Microsoft have given us some great building foundations with the frameworks like the ASP.NET Membership Provider, a lot of these open source programs are very high quality! More so than some of the paid applications.

I thought it would be a good idea to create an ever growing list of all the open source ASP.NET applications I could find - Obviously I haven't had chance to download or install every application so I can't vouch for them (The only ones I have used I'll mark with a *)

e-Commerce / Online Shopping Carts

  1. Dash Commerce - http://dashcommerce.org
  2. Dot Shopping Cart - http://www.dotshoppingcart.com/
  3. VevoCart - http://www.vevocart.com/
  4. e-Shop ASP.NET - http://fkn1337.com/e-shop-aspnet-mysql-script/
  5. PressTopia Shop - http://presstopia.com/dnn/Default.aspx?tabid=236

Content Management Systems

  1. *Umbraco - http://umbraco.org
  2. *DotNetNuke - http://www.dotnetnuke.com
  3. The Beer House - http://www.codeplex.com/Wiki/View.aspx?ProjectName=TheBeerHouse
  4. My Web Pages Starter Kit - http://www.codeplex.com/MyWebPagesStarterKit/
  5. Basic CMS - http://www.basic-cms.com
  6. JMD CMS - http://www.codeplex.com/JMDCMS/
  7. Nickel & Dime CMS - http://ndcms-net.sourceforge.net/
  8. Nolior EZNews - http://sourceforge.net/projects/nolioreznews/

Blogs / Blogging

  1. *Blog Engine .NET - http://www.dotnetblogengine.net
  2. DasBlog - http://www.dasblog.info
  3. *Sub Text - http://www.subtextproject.com
  4. PressTopia - http://presstopia.com/dnn/Default.aspx?tabid=160

Link Directories

  1. *(ASPLD) ASP.NET 3.5 Link Directory - http://www.n3o.co.uk/software/aspld.aspx
  2. XD Link Directory - http://www.ex-designz.net/softwaredetail.asp?fid=835
  3. ASP.NET 2.0 Link Directory - http://www.davemackey.net/Applications/LinkDirectory/tabid/88/Default.aspx

Customer Relationship Management (CRM)

  1. Splendid CRM - http://www.splendidcrm.com

Wiki's

  1. FlexWiki - http://www.flexwiki.com
  2. *ScrewTurn Wiki - http://www.screwturn.eu/Default.aspx?Page=Wiki&AspxAutoDetectCookieSupport=1

Forum / Portals / Networks

  1. *Kigg (Digg like application) - http://www.codeplex.com/Kigg
  2. Club Starter Kit - http://www.codeplex.com/ClubStarterKit/
  3. Drop Things (Web 2.0 Portal) - http://www.dropthings.com
  4. Yet Another Forum - http://www.yetanotherforum.net
  5. DMG Forum - http://www.dmgforums.com/

Recruitment / Job Systems

  1. Job Site Starter Kit - http://www.binaryintellect.net/articles/a203c824-aec1-41b7-b3ec-49a15d5c9ebb.aspx
  2. Stock / Inventory Tracker - http://itracker.df-software.com/download.aspx

Web / E Mail

  1. DotNet Open Mail - http://dotnetopenmail.sourceforge.net/
  2. qqMail - http://www.umailcampaign.com/mailcom.aspx
  3. Sharp Web Mail - http://anmar.eu.org/projects/sharpwebmail/

Image & Video Galleries

  1. Media Library Starter Kit - http://www.asp.net/downloads/starter-kits/media-library/
  2. ASP.NET Foto Gallery - http://www.pentabyte.de/software/WebControls/
  3. gPhotoNet - http://www.thezeal.com/software/index.php?gPhotoNet

Classifieds

  1. Classifieds Starter Kit - http://msdn.microsoft.com/en-us/cc533489.aspx
  2. Dating .NET - http://www20.brinkster.com/joemay7/

Misc

  1. ASP.NET Small Business Web Site Starter Kit - http://msdn.microsoft.com/en-us/cc533514.aspx
  2. ASP.NET Personal Web Site Starter Kit - http://msdn.microsoft.com/en-us/cc533486.aspx
  3. Time Tracking Website - http://msdn.microsoft.com/en-us/cc533488.aspx
  4. DinnerNow (Food Ordering System) - http://www.dinnernow.net
  5. Bug Tracker .NET - http://ifdefined.com/bugtrackernet.html

If you would like your application added to this list please just post a link below and I'll add it

Sunday, August 10, 2008

Making your home web server

Geek to Live: How to set up a personal home web server

client-server-model.jpg

by Gina Trapani

Last updated: September 2006

A web server is software that continuously runs on a computer and allows other computers to download documents from it. This text that you're reading right travelled over a network connection from Lifehacker's hosting web server to your browser. Web servers are usually loud, scary, headless machines in cold windowless rooms, but you can run one under your desk at home.

Why would you want to run a home web server? Maybe you want to download files on your home computer from anywhere. Like, say, your digital music collection. In this how-to, we'll set up a home web server that lets anyone (with the right password!) connect to your computer and download your MP3's from it, for a nice way to share your music collection with friends, or play a song from your home machine at the office for co-workers.

Please note: Running a server on your home computer is a risky undertaking, and before you start, make sure your computer has all the latest patches and security updates, and that you've done a thorough spyware and virus scan. This tutorial is for advanced users who feel comfortable editing textual configuration files and exposing port 80 on their home computer to the internet. As always, a strong firewall with explicit user-set rules is recommended. Still game? Carry on.

Let's get started.

What you'll need:

  1. A Windows PC [1]
  2. An always-on broadband (DSL or cable) internet connection

Step 1. Install Apache HTTP server. [2]

First and foremost, disable and stop any other firewall or server software you may have running, including Windows Firewall, Skype, Trillian or any other instant messaging applications. This is extremely important, and if it's not done, can cause the server installation and startup to fail miserably. These programs and services can be started and used again as usual once we're done setting up the web server.

Download Apache HTTP Server from here, using the link next to "Win32 Binary (MSI Installer)." Start the installation wizard. Accept the license agreement and use the default location for the Apache files, in C:\Program Files\Apache Software Foundation\Apache2.2\. When you reach the screen prompting for server information, enter your own email address and homeip.net [3] as the domain information, like so:

apache-server-info.jpg

Complete the installation wizard using the "Typical installation" setting.

When it's done, open your web browser and go to http://localhost/. If the page you see reads, "If you can see this, it means that the installation of the Apache web server software on this system was successful," you're golden. [4]

Step 2. Configure Apache to share documents from the right folder.

Say you want to make your music collection downloadable using your new web server [5], and all your music files are located in C:\Gina\My Music. Using a plain text editor like Notepad, open the C:\Program Files\Apache Group\Apache2\conf\httpd.conf file. This is Apache's configuration file, which looks long and scary, but most of the defaults will work just fine for us. We just have to change a few things.

In this httpd.conf file, comment out the line that starts with DocumentRoot and add another with your directory, like this:

#DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"
DocumentRoot "C:/Gina/My Music"

Then, comment out the line that starts with

#

Last, about 20 lines below that

AllowOverride None

Change it to:

AllowOverride All

When you're done, save httpd.conf. Then, click on the Apache icon in your taskbar and choose "Restart." If Apache restarts successfully [6], you edited your the file correctly. Visit http://localhost/ in your web browser. This time you should see a listing of your music files. Woo-hoo!

Step 3. Password your web site documents.

But we don't want just anyone to be able to download your music. Your bandwidth is precious, and we want to secure things a bit. Let's create a password prompt.

First, open a command prompt (go to the Start menu, choose Run, then type cmd.) Change to the Apache bin directory by typing:

cd "C:\Program Files\Apache Software Foundation\Apache2.2\bin"

Then create a password file by typing:

htpasswd -c "C:\Documents and Settings\Gina\my_password_file.txt" gina

Replace the path with the path of your new password file (which should in any folder EXCEPT the web server's document root.) Replace gina with the username you want to use. When prompted, enter the password you want to set up. Once you've done that, a password file will be created.

Now we want to apply that login to your music directory. Open up a new file in a plain text editor like Notepad. Copy and paste the following into it:

AuthType Basic
AuthName "This is a private area, please log in"

AuthUserFile "c:\Documents and Settings\Gina\my_password_file.txt"
AuthGroupFile /dev/null


require valid-user

Make sure you replace "C:\Documents and Settings\Gina\my_password_file.txt" in the text with your own password file created above. Save this new file IN YOUR WEB SERVER DOCUMENT ROOT (in this case, C:\Gina\My Music) and name it .htaccess. Don't forget the dot in the beginning, before .htaccess. So, in this case, we're saving the file as C:\Gina\My Music\ .htaccess.

Note: If you're using Notepad to create your .htaccess file, when you save the file, put quotes around the filename - ".htaccess" - so that Notepad doesn't automatically put a .txt extension on the file. If there's a .txt file extension, your password won't work!

Now, using your web browser, go to http://localhost/. You should be prompted to log in. Enter your username and password you set up in your password file. Rock!

Step 4. Congratulate yourself. You've got a home webserver running.

If you are NOT behind a firewall, you can access your web server from other computers by typing your computer's IP address into a web browser's address bar. If you're not sure what your IP is, visit What Is My IP to find out. If your IP is 12.34.567.890, then type http://12.34.567.890 into a browser's address bar. [7]

If you ARE behind a firewall (like a wireless router), you'll need to open up port 80 on the firewall and forward it to your computer. This part is beyond the scope of this article, but will be covered in a future Lifehacker feature is covered in Lifehacker feature How to access a home server behind a firewall.

Enjoy your new home web server!

Further reading on running a personal home web server:

FOOTNOTES:

[1] Sorry Mac folks, but OS X comes with a web server all set up, so this tutorial's not for you. [back up]

[2] There are other web servers out there, but we're going with Apache HTTP server because it's free, stable, and my favorite. [back up]

[3] It doesn't matter what domain you put here. I chose homeip.net because it's descriptive, and one of DynDNS's home domains. [back up]

[4] A common during-installation error with Apache reads, "Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down. Unable to open logs." This means that some other server program (like Skype) is interfering with Apache. To figure out what program it is, open a command prompt and type:

netstat -a -o
Find the PID (Process ID) of the program running on your local machine on port 80 (or http.) Then open the Windows Task Manager (Cntl-Alt-Del). In the View menu, choose Select Columns, and check off PID. Then match the PID to the running process to find out what server program is running, and stop the program. Then retry the Apache installation. [back up]

[5] There are tons of uses for your personal web server beyond a password-protected jukebox. Publish your blog at home, host a personal wiki, share video files and photos. Basically any file you want to publish as read-only is a good candidate. A home web server has the advantage over special server/client software because it only requires a web browser to connect to it. [back up]

[6] If Apache doesn't start correctly, it's because it can't read the httpd.conf file, which means you probably had a typo in your changes. Check your changes very carefully, save and restart Apache to try again. [back up]

[7] Keep in mind that depending on your internet service provider, your computer's IP address may change. There's an easy way to set up a memorable name that doesn't change. but that topic will be covered in an upcoming Lifehacker feature. See Lifehacker feature Assign a domain name to your home web server for details. [back up]

Wednesday, July 2, 2008

Earn money from home....

- a Great Article - Explaining work from home opportunities -


Search the Internet for work-at-home opportunities and the results are pages deep. It's true that you can use the Internet to increase your income and do it from home, but proceed with caution. There are plenty of scammers who make their money by taking yours.
There's no quick way to Internet riches. To earn money, you need to provide some sort of service in return for pay. Like real-life jobs, you may need to pass a test or a background check before getting hired. How much you can make depends on your skill and experience. But where possible, I've listed average pay rates.
Freelancing
If you have special talents, consider freelance work. Freelancing isn't just for writers. Designers, programmers, business professionals, engineers and even administrative assistants will find opportunities.
Many small sites list freelance opportunities. Some let you bid on projects for free. For more opportunities, try Elance.com, Guru.com or Sologig.com. Expect to pay $100 or more for an annual membership.
FIND MORE STORIES IN: Internet Avon Better Business Bureau Tupperware Tutor.com Direct Selling Association Elance.com Guru.com Virtual
As a freelancer, you won't have the security of a full-time job. Projects could be sporadic. You may spend more time finding work than working when you start out. But you set your own hourly or per-project rates.
Customer service
If you're experienced in customer service, you can do this virtually. In addition to your own computer and a landline, you need a quiet environment. You can pick your own hours. You'll earn between $6 and $30 per hour. Try Arise.com, LiveOps.com or WorkingSol.com.
Virtual concierge
Virtual concierges handle errands and inquiries. You may be assigned mundane tasks like scheduling appointments. Or, you may get wacky requests, like locating clothing donned by a movie star.
You need strong customer service skills. Try VIPdesk.com. Or, if you can sell yourself, start your own service. Compensation starts at $14 an hour.
Transcription
Have strong typing skills and a good command of the English language? Consider transcription work. Experience is required, and you must type 75 words per minute. Visit Tigerfish.com and ProductionTranscripts.com.
Direct sales
If you're good at selling, consider direct sales. Many companies have programs, and it isn't just Tupperware or Avon. You can sell in person or via the Internet.
The Direct Selling Association (www.dsa.org) will match companies to your interests. It also offers advice. Visit the individual companies' sites for information on their programs.
Tutoring
If teaching is your passion, become an online tutor. You connect with students via online chat.
Be prepared to take a rigorous test. Teaching experience may be required. Start by visiting SmartThinking.com or Tutor.com. Expect to make $10 per hour.
Help for the disabled
Telecommuting is particularly beneficial for some disabled people. The National Telecommuting Institute (www.nticentral.org) helps individuals with disabilities find work-from-home opportunities. You'll find job listings and advice.
Watch out for scams
You'll find plenty of scam artists when you look for work-at-home opportunities.
Be wary of companies that promise extraordinary sums of money for little work or opportunities that require a substantial investment. In most cases, there shouldn't be up-front fees for getting started. With direct sales, you may need to buy products. Don't pay more than $500. And make sure the company will take back unsold stock.
Before you get involved with a company, do an online search. Type the company name, along with "scam" into a search engine. You'll see if others have had bad experiences with a company. Also, check with the Better Business Bureau (www.bbb.org) for complaints.
Kim Komando hosts the nation's largest talk radio show about computers and the Internet. To get the podcast or find the station nearest you, visit: www.komando.com/listen. To subscribe to Kim's free e-mail newsletters, sign up at: www.komando.com/newsletters. Contact her at gnstech@gns.gannett.com.
Share this story:

Thursday, June 12, 2008

How to access your computer remotely...


There are lots of reasons why you’d want to access your PC remotely, and luckily there are also plenty of ways to do so. Crossloop is one of the simplest (it’s also free), but for those willing to venture further, you’ve got lots of options.

Excuse me while I get technical for a second. This list is divided into four main sections: VNC (Virtual Network Computing), NX, remote desktop and cross-protocol. If those terms mean nothing to you, you might want to skip to the “other” section for the most straightforward applications. That said, let’s begin.

VNC:
Ajax VNC - Clientless VNC solution in the web’s favorite programming language.
Apple Remote Desktop - Apple’s jumped on the remote desktop bandwagon with this great VNC server built right into OS X.
Chicken of the VNC - One of the most popular VNC clients for OS X under the GPL.
DirectVNC - UNIX client using the framebuffer device via DirectFB.
FVNC - Great VNC client written in Flash. That’s right, Flash.
MetaVNC - This unique client/server package merges the host and remote desktops together into one Windows or Linux desktop.
.NET VNC Viewer - C# viewer that works with Windows and Windows Mobile/CE devices.
PowerVNC - Java-based client with support for SSH and SFTP.
RealVNC - Server/client from the original VNC developers.
sVNC - The perfect tool for offering remote assistance to Mac users, since there’s barely any configuring required.
SymVNC - Symbian phone client for connecting to your PC.
TightVNC - Popular VNC server/client with nice Java applet.
TurboVNC - TightVNC spinoff with great support for 3D apps.
UltraVNC - Wildly popular client/server app with file transfer, video drivers, chat, and much more.
Vine Server - OS X server with clipboard sharing, port changing, and a universal binary.
VncViewer for 8086 - Got an old IBM running FreeDOS or DOS? Put it to work with this VNC client.
VNCViewer for PocketPC - Client for, you guessed it, PocketPC users.
x11vnc - Unlike most other VNC servers for UNIX and Linux, this server lets you share your current desktop session (instead of a separate session).

NX:
FreeNX - Open source server using the libraries from NoMachine.
NoMachine NX Client - Free client to connect to NX machines.
NoMachine NX Free Edition - NX server for UNIX/Linux.
NoMachine NX Enterprise Desktop - Server that includes everything that the free edition has, but with unlimited users (unlike the free version’s two).
NoMachine NX Small Business Server - NX server targeting small businesses.
NoMachine NX Enterprise Server - NX Server with unlimited users and unlimited connections.
NoMachine NX Advanced Server Subscription - Everything that the Enterprise server has, plus multi-node capabilities.

Remote Desktop Protocol:
CoRD - Remote desktop client for Mac OS X users.
grdestkop - Gnome wrapper for the rdesktop application.
krdesktop - rdesktop frontend written in KDE.
properJavaRDP - Cross-platform Java client based on rdesktop.
rdesktop - Extremely powerful command-line client for UNIX/Linux.
Remote Desktop - Microsoft’s official server, for XP Pro and Vista.
xrdp - Serves an X window session to incoming Windows clients.


Cross-Protocol:
Connection Manager - VNC, RDP, and Telnet manager for UNIX/Linux distros.
KDE Desktop Sharing - The official KDE VNC server package.
KDE Remote Desktop Connection - The official KDE client for RDP and VNC.
Kurd - Great rdesktop/vncviewer frontend for KDE.
mRemote - Manage VNC and RDP connections on Windows with this handy app.
RDPMan - A little utility to manage RDP, VNC, and Telnet connections for Windows.

Other:
CrossLoop - Easy-to-use remote access utility with file sharing and a multilingual interface.
GoToMyPC - Extremely popular remote access program for ~$25/month.
LogMeIn - Remote access app with a free and a pro ($12.95/month) version with file transfer, remote printing, and more.
Unyte - Nice remote desktop server with a Java applet viewer and IM integration.

Remote File Sharing:
Mionet - A Java Applet platform to share files remotely...

Monday, June 9, 2008

Web 2.0 Services - OogloO Web Design Pakistan

Web 2.0 means changes in the ways web designers and users use the web as a platform. Web 2.0 technologies differ from the 'old web' which is why the design appeared to be the first thing to be changed. Everything from the background to the content fonts has been changed. This kind of platform provides maintenance and a convenient visit and stay on the website for viewers. From the visitor's point of view Web 2.0 uses graphical and navigational tools - like icons, bright color schemes and dividing the content into special functional sections, claims the company.


"The user today is not only a 'visiting individual' surfing the pages, he is now able to change everything to suit "his" own needs in the best way. That is the way the designs are to be prepared," says Bruce Jones. "After all it's not fun when everything is the same all over the Internet. And when improvements are about form, function and design it becomes even more attractive. That is why we are sure that Web 2.0 is the future of the Internet, and our purpose is to contribute to this new positive trend".

OogloO.com, One of the Internet’s templates provider, offers its collection of Web 2.0 Templates – a new generation web design concept that makes surfing intuitively simple and enjoyable. http://www.OogloO.com/templates.html

It may seem that the term Web 2.0 means a new version of the World Wide Web, when it actually does not refer to any kind of update to Web itself. Web 2.0 only means changes in the ways web designers and users use the web as a platform. Web 2.0 technologies greatly differ from the “old web” which is why the design appeared to be the first thing to be changed. Everything starting with the background and ending with content fonts has been changed. This kind of platform provides easier maintenance and a more convenient visit and stay on the website for viewers. This product is very easy to use for website owners. That’s the thing about Web 2.0 – it’s easy to customize and to edit. From the visitor’s point of view Web 2.0 is easier to browse and better-looking because it uses specific graphical and navigational tools - like icons, bright color schemes and dividing the content into special functional sections.

OogloO Web Design & Development is a website design business that knows how to create revenue for your company using state of the art website design templates and top notch website designers. They service both small and large companies with custom web site designs that are affordable for every budget.

What is XML

X M L
XML was designed to transport and store data.
HTML was designed to display data.

What is XML?
XML stands for EXtensible Markup Language
XML is a markup language much like HTML
XML was designed to carry data, not to display data
XML tags are not predefined. You must define your own tags
XML is designed to be self-descriptive
XML is a W3C Recommendation

The Difference Between XML and HTML
XML is not a replacement for HTML.XML and HTML were designed with different goals:
XML was designed to transport and store data, with focus on what data is.HTML was designed to display data, with focus on how data looks.
HTML is about displaying information, while XML is about carrying information.
XML Does not DO Anything
Maybe it is a little hard to understand, but XML does not DO anything. XML was created to structure, store, and transport information.

The following example is a note to Tove from Jani, stored as XML:

Tove
Jani
Reminder
[body]Don't forget me this weekend![/body] (due to blog restriction i have replaced <> tags with [] tags around body. Please replace them if you intend to use)


The note above is quite self descriptive. It has sender and receiver information, it also has a heading and a message body.

But still, this XML document does not DO anything. It is just pure information wrapped in tags. Someone must write a piece of software to send, receive or display it.

XML is Just Plain Text
XML is nothing special. It is just plain text. Software that can handle plain text can also handle XML.
However, XML-aware applications can handle the XML tags specially. The functional meaning of the tags depends on the nature of the application.

With XML You Invent Your Own Tags
The tags in the example above (like and ) are not defined in any XML standard. These tags are "invented" by the author of the XML document.
That is because the XML language has no predefined tags.
The tags used in HTML (and the structure of HTML) are predefined. HTML documents can only use tags defined in the HTML standard (like

, h1, etc.).
XML allows the author to define his own tags and his own document structure.
XML is Not a Replacement for HTML
XML is a complement to HTML.
It is important to understand that XML is not a replacement for HTML. In most web applications, XML is used to transport data, while HTML is used to format and display the data.

My best description of XML is this:
XML is a software and hardware independent tool for carrying information.
XML is a W3C Recommendation
The Extensible Markup Language (XML) became a W3C Recommendation 10. February 1998.

XML is Everywhere
We have been participating in XML development since its creation. It has been amazing to see how quickly the XML standard has developed and how quickly a large number of software vendors have adopted the standard.
XML is now as important for the Web as HTML was to the foundation of the Web.
XML is everywhere. It is the most common tool for data transmissions between all sorts of applications, and becomes more and more popular in the area of storing and describing information.