Archive for the ‘PHP’ Category

Best 25 Free Online Fax Services

It can be quite expensive to keep separate and dedicated Fax machines for different sections of big offices. Every department want privacy of data and want to shed the dependence on one particular fax machine.

But on the other hand, when many employees are at freedom of working from home and others are traveling continuously to every corner of world, keeping Fax machines at every place is next to impossible. Many of you don’t know that we can look up to online fax service in such a right spot.

Although most of these online fax services are not free to use but you can always opt for the trial version before actually buying the paid version. Today we have collected 25 Best Free Online Fax Services which will give you a whole bunch of happiness. You will no more be on the mercy of the Fax machine being kept on the reception area of your office. These Online Fax Services send Fax to you in form of emails so you can check the fax at your ease. Please have a look at below mentioned 25 Best Free Online Fax Services (Trial Versions) and make your life simple and better.

If you like this article, you might be interested in check the collection of website for Free Stock Photos,Make a Cartoon of Yourself, Finding a Perfect Domain Name, Download Free Fonts, Have Fun With Your Pics, Free Textures, and Getting Free Vector Art Images.

eFax

Send & receive faxes by email and you will also get a local fax number. You can check it with a 30 day trial offer.

eFax

More Information on eFax

K7

Its a web-based unified messaging system that channels your free voicemail and fax messages directly to your e-mail. K7 Unified Messaging provides you with a free phone number.

K7

More Information on K7

faxZERO

In its free version, you will have an Ad on the cover page,you can Fax 1 document — max 3 pages and Max 2 free faxes on per day basis

faxZERO

More Information on faxZERO

My1Voice

My1Voice is a virtual phoone. You can check a 30 day trial version and receive faxes from your my1voice number along with other features.

My1Voice

More Information on My1Voice

PamFax

With a trial version of PamFax, you can send some faxes for free. Iit supports many file formats in addition to PDF and DOC files.

PamFax

More Information on PamFax

ScanR

It’s a digital scanner and fax in your pocket! Your phone is suddenly a business center – scan, print and fax wherever you go. Scan documents to turn them into digital files you can store, share, and fax.

ScanR

More Information on ScanR

freefax

freefax

More Information on freefax

Interpage

This is a free service offered by Interpage to demonstrate and promote our fast, robust, and reliable email-to-fax and other fax delivery services. Using this service, you may send a fax for free to any US/Canada-based fax machine, for delivery to the destination fax which you specify

Interpage

More Information on Interpage

MaxEmail

Send & Receive Faxes Without Buying a Fax Machine or an Expensive Dedicated Phone Line

MaxEmail

More Information on MaxEmail

RapidFAX

RapidFAX combines the utility of fax with the ease of email to meet the needs of the small office and home office.

RapidFAX

More Information on RapidFAX

smartfax

Send fax from email to any fax number. Merge the convenience of email with fax.

smartfax

More Information on smartfax

TrustFax

With Trustfax, no Fax Machine or Phone Line Required and you get a Toll-Free and Local Fax Number.

TrustFax

More Information on TrustFax

VIF Internet

ervice limited to sending free faxes to the city of Montreal, Canada.

VIF Inter

More Information on VIF Internet

Metro Fax

With metro fax you can send high quality faxes from anywhere in the world using your web browser, no need for a fax machine, to a wide range of locations.

Metro Fax

More Information on Metro Fax

PopFax

You will get an account to send and receive fax, with a local fax number you can choose from over 500 cities in 20 countries. What more you can even go for a mobile fax service.

PopFax

More Information on PopFax

FaxFreedom

Fax machines are expensive and take up too much room. With FaxFreedom you can now simply send and receive faxes from any computer.

FaxFreedom

More Information on FaxFreedom

nextiva

With Nextiva vFAX all you need is an Internet connection in order to send and receive faxes. Our online fax service is easy to use, affordable and gives you great flexibility.

nextiva

More Information on nextiva

MyFax

MyFax is a fax service that lets you send and receive faxes through your email, the web, or smart phone.

MyFax

More Information on MyFax

Wonderfax

WonderFax is a free UK fax number that pick up your fax, converts them to a pdf file and emails it back to you as an attachment. So there is no need for fax lines or fax machines.

Wonderfax

More Information on Wonderfax

FaxOrama

FaxOrama supports multiple document formats like DOC, DOCX, RTF, GIF, JPG, JPEG, PDF, TIF, XLS, XLSX, TXT, PNG, BMP and WPS. You can also opt for a restricted sending option but an ad free free version.

FaxOrama

More Information on FaxOrama

Superfax

You can get a Fax Number in Paris, Los Angles or London for Free for a week. And See how it works.

Superfax

More Information on Superfax

MESSAGENET

It gives you 90 days trial period to check the service. You can both receive as well as send fax free till this time

MESSAGENET

More Information on MESSAGENET

GotFreeFax

It lets user send free fax online to the US and Canada without ads

GotFreeFax

More Information on GotFreeFax

that’s it.

Top 10 online Fax Services

A fax (short for facsimile) is a document sent over a telephone line. Although businesses usually maintain some kind of fax capability, the technology has faced increasing competition from Internet-based alternatives. However, fax machines still retain some advantages, particularly in the transmission of sensitive material which, if sent over the Internet unencrypted, may be vulnerable to interception. In many corporate environments, standalone fax machines have been replaced by “fax servers” and other computerized systems capable of receiving and storing incoming faxes electronically, and then routing them to users on paper or via an email (which may be secured). Such systems have the advantage of reducing costs by eliminating unnecessary printouts and reducing the number of inbound analog phone lines needed by an office.

Don’t have a fax machine ? No problem. You can use the Internet to send a free fax to any number all over the world. Here You find 10 websites for free online fax services.

1 . Myfax

  • Website : http://myfax.com
  • Fax Limitation : Unlimited
  • Support : Text and Document (.doc , .pdf etc)
  • Fax Receive : No
  • Registration Requirement : No
  • Country Limitation : Available for 41 Country’s

2 . Pamfax

  • Website : http://www.pamfax.biz
  • Fax Limitation : Unlimited
  • Support : Text and Document
  • Fax Receive : Yes
  • Registration Requirement : Yes
  • Country Limitation : Worldwide

3 . Faxzero

  • Website : http://faxzero.com
  • SMS Limitation : 2 faxes per day for free
  • Support : Text and Document
  • Registration Requirement : No
  • Country Limitation : Unknown

4 . Freepopfax

  • Website : http://www.freepopfax.com
  • Fax Limitation : Unlimited
  • Support : Text and Document
  • Registration Requirement : No
  • Country Limitation : Available for 48 Country’s

5 . Gotfreefax

  • Website : http://www.gotfreefax.com
  • Fax Limitation : 2 faxes per day for free
  • Support : Text and Document
  • Registration Requirement : No
  • Country Limitation : Worldwide

6 . Freefaxbutton

  • Website : http://www.freefaxbutton.com
  • Fax Limitation : 2 faxes per day for free
  • Support : Text only
  • Registration Requirement : No
  • Country Limitation : Available for 65 Country’s

7 . Fax1

  • Website : http://www.fax1.com
  • Fax : $1 for free use
  • Support : Text and Document
  • Fax Receive : Yes
  • Registration Requirement : Yes
  • Country Limitation : Worldwide

8 . Freefax

  • Website : http://freefax.1888usa.com
  • Fax Limitation : Unlimited
  • Support : Text only
  • Registration Requirement : No
  • Country Limitation : Available for 28 Country’s

9. Sendfreefax

  • Website : http://sendfreefax.net
  • Fax Limitation : Unlimited
  • Support : Text only
  • Registration Requirement : No
  • Country Limitation : Worldwide

10 . Faxaway

  • Website : http://www.faxaway.com
  • Fax Limitation : Unknown
  • Support : Text and Document
  • Fax Receive : Yes
  • Registration Requirement : Yes
  • Country Limitation : Worldwide

A detailed Discussion about CSS3 : border-image

Another exciting new border feature of CSS3 is the property border-image. With this feature you can define an image to be used instead of the normal border of an element. This feature is actually split up into a couple of properties: border-image and border-corner-image. These two values are shorthands for:

  • border-image:
    • border-top-image
    • border-right-image
    • border-bottom-image
    • border-left-image
  • border-corner-image:
    • border-top-left-image
    • border-top-right-image
    • border-bottom-left-image
    • border-bottom-right-image

border-image currently works in Safari and Firefox 3.1 (Alpha). The syntax to use it is:

border-image: url(border.png) 27 27 27 27 round round;

Which results in:

Lorem ipsum dolor sit amet.

Or:

border-image: url(border.png) 27 27 27 27 stretch stretch;

Which then results in:

Lorem ipsum dolor sit amet.

For those of you not so lucky as to be able to see this, here are screenshots of the two examples.

Number one:
border-image first example
Number two:
border-image second example

The new CSS3 property border-image is a little tricky, but it can allow you to create flexible boxes with custom borders (or drop shadows, if that’s your thing) with a single div and a single image. In this article I explain how the border-image shorthand property works in today’s browsers.

The basic idea

The border-image shorthand property has 3 parts:

border-image: url(border-image.png) 25% repeat;

Essentially, these allow you to specify:

  1. An image to use as the border
  2. Where to slice that image, dividing the image into 9 sections
  3. How the browser should apply those sections to the edges of your element

The pertinent details

Let’s look at each part of the process in a little more detail. The first part is easy, and is familiar from the background-image property. For demonstration purposes I’ll use this image, which is 100px x 100px:

A border-image

Slicing your image

The second part can have from one to four values, much like the border-width property, and they are specified in the same order: top, right, bottom, left. You can use percentages or pixels. Strangely, the percentages require the “%”, while pixels should be listed without the “px”:

border-image: url(my-image.gif) 25% 30% 10% 20% repeat;
border-image: url(my-image.gif) 25 30 10 20 repeat;

In this case, since my image is 100px x 100px, the two rules above are equivalent – they slice the image in the same places. I’ve added some dimensions on my image to demonstrate:

A border-image

Repeat, Round, Stretch

border-image will always place the corner sections of your image into the corresponding corners of your element box, but the third part of the shorthand rule tells the browser how to treat the middle sections of your image — the ones that will go along the edges of your element. Repeat (repeat, or tile, the image) and stretch (stretch, or scale, the image) are pretty self-explanatory. Round means tile the image but only so that a whole number of tiles fit, and otherwise scale the image. Right now, Safari and Chrome interpret round asrepeat. There can be up to two values: one for the top and bottom edges of the element, and one for the left and right. Here’s an example with the top/bottom value set to repeat, and the left/right value set to stretch:

#example-one {
 border-width:25px 30px 10px 20px;
 -moz-border-image:url("border-image.png") 25 30 10 20 repeat stretch;
 -webkit-border-image:url("border-image.png") 25 30 10 20 repeat stretch;
 border-image:url("border-image.png") 25 30 10 20 repeat stretch;
}

Screenshot for Example One

LIVE DEMO, RSS READERS CLICK OVER TO SEE. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Border-width

border-image won’t do anything if you don’t specify a width for your border. For browsers that understand border-image, your image slices will be scaled to the specified width. If you use the border shorthand property, it provides a nice fallback for browsers that don’t:

#example-two {
 border:50px double orange;
 -moz-border-image:url("border-image.png") 25 30 10 20 repeat;
 -webkit-border-image:url("border-image.png") 25 30 10 20 repeat;
 border-image:url("border-image.png") 25 30 10 20 repeat;
}

Screenshot of Example Two

LIVE DEMO, RSS READERS CLICK OVER TO SEE.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Or you can specify each width individually (in this example I’ve specified widths such that the image slices aren’t scaled at all):

#example-three {
 border-color:orange;
 border-style:double;
 border-width:25px 30px 10px 20px;
 -moz-border-image:url("border-image.png") 25 30 10 20 repeat;
 -webkit-border-image:url("border-image.png") 25 30 10 20 repeat;
 border-image:url("border-image.png") 25 30 10 20 repeat;
}

Screenshot of Example Three

LIVE DEMO, RSS READERS CLICK OVER TO SEE. dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Using a plain border at the same widths as your border-image won’t always be ideal, however, so you may want to use conditional stylesheets to give IE some different border styles altogether.

Browser quirks

Predictably, IE doesn’t understand anything of border-image. Browsers that do support border-image only support the shorthand property, not all the individual properties that aredescribed in the spec. Some potentially useful properties aren’t supported at all, especiallyborder-image-outset, which would solve this problem.

Also, the default behavior is supposed to be to discard the center section of the image, and use the ‘fill’ keyword on the border-image-slice property to preserve it:

The ‘fill’ keyword, if present, causes the middle part of the border-image to be preserved. (By default it is discarded, i.e., treated as empty.) (Read the spec)

But the current browser behavior is to preserve the middle, and there is no way to turn it off. Thus, if you don’t want your element’s content area to have a background, the center section of your image must be empty. However, you can use this filling behavior to your advantage, to create a box with a fancy border and background, with only one image.

Interactive demo

I built a border-image demo page to help me get my head around this complicated new set of CSS3 properties. You can pick an image, specify repeat, round, or stretch, and adjust the border-width and slicing. Enjoy!

Examples in the wild

CSS3 makes it possible to specify an image as an element’s border, instead of just a solid color. While on the surface this doesn’t seem particularly interesting, the way the property works makes it more than that which meets the eye. The border-image property lets you specify a single image for the purpose and then slices that image to create the desired border effect. Yes, CSS is slicing now. border-image is currently supported in all the modern browsers to various degrees except IE (as of IE9). The shorthand syntax is:

border-image: url(image.png) 25 40 12 10 stretch;

Where:

  • url: The image that should be used as the border image.
  • slicevalues: Up to four numbers that specify where the browser should slice the image:
    • The 1st value sets the offset of the first horizontal cut from the top of the image. For pixel units, do NOT include the “px” suffix.

    • The 2nd value sets the offset of the second vertical cut from the right edge of the image.

    • The 3rd value sets the offset of the third horizontal cut from the bottom of the image.

    • The 4th value sets the offset of the fourth vertical cut from the left edge of the image.

  • stretch: How the slices should be oriented inside the element’s border. Valid values are “stretch”, “repeat”, “round”, or “space”.

For slicevalues, if only one number is defined, the same value will be used for all 4 cuts. If 2 numbers are defined, the first is used for the top and bottom cuts, and the second the left and right cuts. Regardless, 4 cuts are made to the image in total, and the browser ends up with 9 slices that it uses to put together the border image of an element. Each slice is used to fill the corresponding edges of the element’s border, with the center slice covering the element itself (and should be made transparent in most cases).

This post isn’t about a detailed description of border-image– that will have to be for another post. For this post, what I want to demonstrate is how to use this property to easily add image frames to containers on your page. First, create the image you’d like to use as the frame; here I’ve whipped up 2 simple frames to illustrate the technique:

  

Note that both images above have a transparent inside so the content they are framing can show through.

Now, to the heart of the matter- to add an image border to an element, define the border-image property with slicevalues that cut up the image as desired. Also define a border-width property echoing those values. Enough talk, to some examples now! Note that the below examples do not work in IE (as of IE9):

Example 1:

Found across much of the tropics, the coconut is known for its great versatility as seen in the many domestic, commercial, and industrial uses of its different parts. Coconuts are part of the daily diet of many people. Its endosperm is known as the edible “flesh” of the coconut; when dried it is called copra. The oil and milk derived from it are commonly used in cooking and frying; coconut oil is also widely used in soaps and cosmetics. The clear liquid coconut water within is a refreshing drink and can be processed to create alcohol. The husks and leaves can be used as material to make a variety of products for furnishing and decorating. It also has cultural and religious significance in many societies that use it. -Wikipedia

CSS:

.imageborder{
border-width: 20px;
-moz-border-image: url(frame.gif) 20 stretch; /*Mozilla version*/
-webkit-border-image: url(frame.gif) 20 stretch; /*Webkit version*/
-o-border-image: url(frame.gif) 20 stretch; /*Opera version*/
-ms-border-image: url(frame.gif) 20 stretch; /*IE syntax when it does support this prop*/
border-image: url(frame.gif) 20 stretch; /*Standard version*/
}

Markup:

<div style=”width:50%;min-height:150px”>
Content text here…
</div>

Example 2:

CSS: Same as above.

Markup:

<img src=”coconut.jpg” />

Example 3:

CSS:

.imageborder2{
border-width: 25px 30px;
-moz-border-image: url(frame2.png) 25 30 stretch;
-webkit-border-image: url(frame2.png) 25 30 stretch;
-o-border-image: url(frame2.png) 25 30 stretch;
-ms-border-image: url(frame2.png) 25 30 stretch;
border-image: url(frame2.png) 25 30 stretch;
}.

Markup:

<div style=”width:470px;height:300px;background:url(ocean_thumb.jpg) center center no-repeat”>
</div>

 

If you have other examples on live sites, I’d love to see them. Leave a link in the comments!

How to get a Paypal Button on webpage

Write the below given code into an HTML file where you want to add a donation button.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick"/>
    <input type="hidden" name="business" value="donations@example.com"/>
    <input type="hidden" name="item_name" value="School Fund"/>
    <input type="hidden" name="item_number" value="2011"/>
    <input type="hidden" name="amount" value="50.00"/>
    <input type="hidden" name="no_shipping" value="2"/>
    <input type="hidden" name="no_note" value="1"/>
    <input type="hidden" name="currency_code" value="USD"/>
    <input type="hidden" name="tax" value="0"/>
    <input type="hidden" name="bn" value="PP-DonationsBF"/>
    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" 
        border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"/>
    <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
</form>

where input type are fields to have values for your expectations, the name business shows the value for the type of business, item_name shows the type of item, amount for the value of item, and so on …

And you are done with a button for your Paypal payment gateway.

And for the rest making a change in value for the line <input type=”hidden” name=”bn” value=”PP-DonationsBF”/>,
you can switch between several types of alternatives:

  1. <input type=”hidden” name=”bn” value=”PP-SubscriptionsBF”/>
  2. <input type=”hidden” name=”bn” value=”PP-DonationsBF”/>
  3. <input type=”submit” value=”PayPal”/>
  4. <input type=”hidden” name=”bn” value=”PP-BuyNowBF”/>
  5. <input type=”hidden” name=”bn” value=”PP-ShopCartBF”/>

Hence your Paypal gateway is ready to face the world of payments.

Debugging : How To Configure IIS 7.0 and Tomcat on Windows Server 2008

Question/Problem : How To Configure IIS 7.0 and Tomcat on Windows Server 2008
I have a Website designed in ASP.NET 3.0 and have another application in Java and after i read your some of the bogs came to know about the dependencies of java and dotnet so decided to combine both of the application in a single one web application. Actually Website in ASP.net is a Bio Portal and the application in java is a webmail Portal. since both are right at there places but the problem is that java based webmail needs Apache tomcat for execution as a must and have installed Bio Portal on a domain hosted on IIS 7.0 (Windows server 2008). is unable to interrelate both the technologies into one. could any one can help me.

Solution : For the purposes of this installation guide I used Java Runtime Version 6 Update 21, Apache Tomcat 6.0.29 and the Microsoft IIS Application Request Routing (ARR) 2.0 module.

You can download the software that I used in this guide from the following locations :

1. Java JRE Version 6 Update 21 (If have installed this go to point 2)
http://www.oracle.com/technetwork/java/javase/downloads/index.html

2. Apache Tomcat (32-bit/64-bit Windows Service Installer) (If have installed this go to point 3)
http://tomcat.apache.org/download-60.cgi

3. IIS Application Request Routing (ARR) 2.0 (If have installed Proceed from here to next)
http://www.iis.net/download/applicationrequestrouting

Start by installing the Java runtime (JRE) and accept the license agreement.

Then change the installation target folder to C:\Java and then click OK and wait while Java installs

Once you have installed Java you can start installing Tomcat. Double-click the apache-tomcat-6.0.29.exe file to invoke the Apache Tomcat Setup Wizard.

Choose a Custom installation and ensure that the Examples are selected as shown here. You wouldn’t necessarily want to install the sample applications in a production environment but we will be using them in this walkthrough so we need to install them.

Select to install Tomcat in the C:\Tomcat folder as shown here and then click Next.

Leave the default HTTP/1.1 Connector port set to 8080 and choose a password for the admin account.

The setup wizard should find your Java installation automatically.

Click install and wait while Tomcat setup completes. When the installation is complete click Finish.

Now that you have Tomcat up and running you can test your installation by pointing your server’s browser at http://localhost:8080 and you should see the default Apache Tomcat welcome page as shown here.

Now that we have got Tomcat working

Now the configuration of IIS 7.0 and Tomcat can be done with two ways

  1. using IIS ARR Module
  2. Using JK 1.2 ConnectorWe will be proceding for the solution step by step, so let us start our first step using IIS ARR Module.

1. How To Configure IIS 7.0 and Tomcat with the IIS ARR Module

we need to install and configure the IIS Application Request Routing module which will allow IIS to act as a proxy server and forward requests on to Tomcat. Run the ARRv2_setup_x86_en-us.EXE file (or ARRv2_setup_amd64_en-us.EXE if you are using 64-bit Windows) to begin the ARR setup routine.

When the ARR module installation has completed it will create a log file (arr_setup.log) which can be found the %TEMP% folder.

Now that the Application Request Routing (ARR) module has been installed we need to configure it to act as a proxy server (this functionality isn’t enabled by default). In IIS Manager highlight the Application Request Routing Cache feature and click Open Feature in the Actions pane.

Click Server Proxy Settings in the Actions pane.

Tick the Enable proxy checkbox and then click Apply. Leave all the default values in place.

Next we need to configure a URL Rewrite rule so that IIS knows what to do with requests which we want to forward to Tomcat. Click the Default Web Site, highlight the URL Rewrite icon and then click Open Feature in the Actions pane.

In the URL Rewrite feature click Add Rules in the Actions Pane.

In the Add Rule(s) dialog box select Blank rule and click OK.

In the Edit Inbound Rule feature assign a name to the new rule and type (examples.+) in the Pattern dialog box. The new rule should default to using Regular Expressions (if it doesn’t ensure that you select this option)

In the Action section of the Edit Inbound Rule feature ensure that the Action type is set to Rewrite and then enter http://localhost:8080/{R:0} in the Rewrite URL dialog box as shown below. Click Apply to create the new rule.

Everything we need to configure is now in place and we are ready to test. Start by browsing the ‘Request Headers’ sample application from Tomcat directly on port 8080 with the result shown here.

The final step is to browse the same ‘Request Headers’ sample application on port 80 so that the request will be handled by IIS before being forwarded to Tomcat by the ARR proxy. If everything is configured correctly you should see the sample application load successfully as shown here.

If you now examine the IIS log file (which can be found in C:\inetpub\logs\LogFiles by default) you will see that the request for the Tomcat sample application was processed by IIS and proxied by the ARR module. The IIS log file contains both the X-ARR-CACHE-HIT and X-ARR-LOG-ID details as shown here.

Using the IIS ARR module means that there is no longer any need to use the Tomcat JK 1.2 ISAPI Connector. However, I would always recommend that you test your application rigorously before deploying it in a production environment. If you do find any issues with ARR you can always get support in the IIS ARR forums here :

http://forums.iis.net/1154.aspx

2. How To Configure IIS 7.0 and Tomcat with JK 1.2 Connector

Now we need to configure the JK 1.2 Connector which will allow IIS to effectively act as a proxy and forward requests on to Tomcat. Start by creating a folder called ‘ISAPI’ under the Tomcat root folder. Then copy the isapi_redirect-1.2.28.dll file into the ‘ISAPI’ folder and rename the file to isapi_redirect.dll as shown here.

In order to configure the Tomcat connector you need to either add an entry in the Windows registry or you can use the isapi_redirect.properties file. The isapi_redirect.properties file tells the connector where to find its configuration files and also where the isapi_redirect DLL file is located. If you have used the same directory structure as I have you can configure your isapi_redirect.properties file as shown here.

We also need to either update or create the two Tomcat connector configuration files (workers.properties and uriworkermap.properties) so that the connector knows how to handle the requests it receives. These configuration files are documented on the Tomcat web site here : The Apache Tomcat Connector – Reference Guide
If you have just installed Tomcat with the sample applications then you can copy the sample uriworkermap.properties file shown here. Both config files need to placed in the Tomcat ‘conf’ folder which in this example is C:\Tomcat\conf

You can also copy the sample workers.properties file as shown below and save it to the C:\Tomcat\conf folder.

Now we need to configure IIS. Start by creating a virtual directory and give it an alias of ‘jakarta’ as shown here. Incidentally, you don’t have to call the virtual directory ‘jakarta’ – you can actually give it any name you like, just so long as the name you choose appears in the extension_uri line of your isapi_redirect.properties file.

Next we need to configure the virtual directory to have execute permission. This was a simple tick-box option in IIS 6.0 but in IIS 7.0 we need to click on the Jakarta virtual directory and then double-click Handler Mappings.

Within the Handler Mappings feature click Edit Feature Permissions in the Actions Pane.

Click Execute in the Edit Feature Permissions dialog box and click OK.

In the Handler Mappings feature you can now see that calls to ISAPI-dll files are enabled.

The next step is to add an ISAPI filter on the web site. To do this click on the web site and then double-click the ISAPI Filters feature.

In the Actions pane click Add.

In the Add ISAPI Filter dialog box enter a name and the path to the isapi_redirect.dll file and click OK.

The Tomcat ISAPI filter should now appear in the ISAPI Filters list as shown here.

The final step we need to take is to configure the ISAPI and CGI Restrictions feature in IIS 7.0. This is analogous to adding or allowing a Web Service Extension in IIS 6.0. In IIS Manager navigate to the Server Home and then double-click on the ISAPI and CGI Restrictions feature.

In the ISAPI and CGI Restrictions feature click Add on the Actions pane.

In the Add ISAPI or CGI Restriction dialog box enter a name and the path to the isapi_redirect.dll file, tick the Allow extension path to execute option and click OK.

The Tomcat ISAPI extension should now appear in the list with a Restriction status of allowed as shown here.

Everything we need to configure is now in place and we are ready to test. I started by requesting the ‘Hello World’ sample application from Tomcat directly on port 8080 with the result shown here.

The final step is to request the same ‘Hello World’ sample application using port 80 so that the request will be handled by IIS before being forwarded to Tomcat. If everything is configured correctly you should see the sample application load successfully as shown here.

If you now examine the IIS log file (which can be found in C:\inetpub\logs\LogFiles unless you moved it) you will see the request for the sample application being handled by IIS over port 80. One behaviour change that I have noticed is that the actual resource being requested isn’t logged with IIS 7.0 whereas it was in IIS 6.0, although I think this is likely to be a change in the bahviour of the ISAPI filter itself rather than any change in how IIS logs requests.

That’s It. I think it will help all of my visitors to have the solution for their problems. If have any Problems please feel free to post comments right here.

A list of top 10 and Best FREE Webmail for your Website

10 Best FREE Webmail for your Website

Webmail’s software’s are scripts which run on your servers and give you browser based mail client interface like Gmail, Yahoo etc. There are several free webmail scripts available for php/mysql. They are especially useful in checking mails on the go, also when you have several employees and want everyone to have their own email under same domain, it can be easier for employees to login. Also as you’ll be using your own server the limit of storage will be your hosting servers limit itself, so it’s useful in you get lots of emails with big attachments and no free email service is offering enough space to store them.

Round Cube

It is a multilingual web based email client for PHP/MySQL. It offers a wide variety of features and is open source.

  • Full HTML email support
  • Multilingual with over 60+ languages
  • Search suggest address book
  • HTML message composing
  • Threaded Message
  • Shared folders
  • Can be extended using plugin api

Xeams

Secure and powerful mail server with multi OS support, currently it supports Windows, Linux, Solaris, MacOSX and other flavors or UNIX. Also comes with Spam filtering mechanism and is completely free.

  • Multi OS support
  • 99% spam protection
  • SMTP, POP3 and IMAP support
  • Policy Enforcement
  • Message Archiving

Claros inTouch

Open source ajax communication suite with built in messenger, rss, calendar, post-it support. It is created on java technology so your server need to have JAVA 2 SDK installed.

  • Live Messenger
  • Multiplatform Support
  • Multilingual
  • Post It Notes
  • RSS
  • Built In Spam Protection
  • Can be extended using plugin api

Conjoon

Full featured web based application for webmail with folder management, editor, feed reader, web 2.0 mashups and tabbed browsing. Built in ExtJs and Zend Framework and is completely free.

  • Browser Compatibility
  • Twitter Module
  • Tabbed Browsing
  • Intelligent Caching
  • Feeds Module
  • Wizard based installation

At mail

Free open source webmail written in PHP. Written to make it light weight yet powerful application. Also offers video mail and is multilingual.

  • Lightweight
  • Video Mail
  • Live Spell Check
  • HTML email Composing
  • LDAP address book

Xuheki

IMAP Browser based client for your email server. Licensed under GNU GPL and having a complete ajax interface. The main drawback is no support for POP3.

  • Multiple Folder
  • Browser Support
  • HTML Editor
  • Search & Sort
  • Excellent MIME Support

Zimbra

Zimbra claims to be the most capable open source email and collaboration suite available today. Comes with Rich AJAX integration and has global address lists, shared calendars and document management on the web or offline with Zimbra Desktop.

  • HTML Email
  • Mobile Support
  • Sharing and Document Management
  • Powerful Administration
  • Group Calendars

Exemis

It is a skin for well-known squirrel mail which comes bundled with most of cpanel hosts. It transforms the squirrel mail into user-friendly mail.

  • Plugin Support
  • No JavaScript required
  • Ajax Interface

Crystal Mail

Based on Roundcube it improves over the original interface. Released under GNU GPL 3.0 License. Claims to be world’s best webmail client. Also comes with 3 column layout.

After Logic Mail

After Logic Comes with a bundled package consisting of

E-mail Components

1. MailBee.NET Objects
Brings e-mail capabilities to your .NET applications in a few lines of code. You may choose a part of MailBee.NET Objects by standard (SMTPPOP3,IMAPSSLAntiSpamOutlook) or by task:create and sendreceiveparsemanage IMAP,protectbulk e-mails, make them safeprotect from spam, convert to Outlook .MSG or to PDF.

For developers who use classic ASP, Delphi or VB6, we offer ActiveX version – MailBee Objects.

WebMail

2. AfterLogic WebMail Pro
Webmail front-end for your existing POP3/IMAP mail server. It uses powerful AJAX interface for faster access to your emails. Available for both major web platforms: ASP.NET (Windows only) and PHP (Linux/Windows).

Complete E-mail Solution

3. AfterLogic MailSuite Pro for Linux
This messaging and collaboration solution includes a web-based admin panel, an SMTP/POP3/IMAP server (MTA), anti-spam and anti-virus protection, plus all the features of AfterLogic WebMail Pro, such as AJAX-based webmail, personal calendars, contacts, and more. It ships as a self-contained installation package for a quick and effortless setup, and available as a free trial.

There are many other paid solutions available which may be better than the above listed mail scripts. If you have come across a good script let us know!

Creating Self Email Company like Gmail and Hotmail

Create your own Email Company like Gmail and Hotmail

 

Gmail and Hotmail provides great free email service. They both provide many free tools with their email service. Have you ever thought to create your own email company like Gmail, Hotmail? Yeah ! Many times, but didn’t find any good site to do this. Here is the guide to create your own professional email service like Gmail and Hotmail. All you must have is a domain name and good knowledge of Internet. We will do this by registering with Windows Live Domains which provides 500 free email accounts with 5 GB Space in each account and with many free services.

gmail hotmail 300x200 Create your own Email Company like Gmail and Hotmail

Steps to Create your own Email Company:

First of all, Go to https://domains.live.com. It requires your Hotmail Username and password, so keep them ready. Now, you have reached the Windows Live Admin Center, Click “Sign in”, at the login page, enter your Hotmail email address and password then click “Sign in”. I have registered two domains at there, so I will get a different page then the new ones. Click “Add Domain” button, then you will get a page saying “Create a Windows Live experience for your domain”. Enter your domain name in the field labeled “Provide your domain name” and mark the “Set up Windows Live Hotmail for my domain” and click “Continue”.  Now, you’ve reached the page “Review settings and accept agreement”, Click “I accept”. Then you will be redirected to the “Domain Settings” page. Now, all the settings in the Windows Live Domains have been setup, now go to your “Domain Manage” panel and change MX Records.

What happens after 500 Email accounts exceeded?

Windows Live Domains provides 500 email accounts, so you (and other users) can create 500 email accounts, what if you exceed this? The solution is available. Windows Live Domains provides more email accounts on the request of the domain admin. So, when you exceed it, just ask for more accounts.

Promote your Email Service:

email promote TechListen Create your own Email Company like Gmail and Hotmail

After getting email service, it’s time to promote it. Promote it on your blog/website, in emails, on business cards, etc. way. The more you promote, the more users you’ll get. You are not getting just the Email service for your domain, but you are getting lots of services free with it. You get SkyDrive (25 GB Free Space), Photos, etc. So, attract your visitors with these free services.

If you have any question about this process, then please let me know by commenting here. I will be happy to assist you icon smile Create your own Email Company like Gmail and Hotmail

A Detailed Discussion Over CSS Filters

Little About This Post

without the discussion of CSS Filters, the story started with two previous blog posts

A Detailed Discussion Over Exploring CSS Refreshers : Borders

A Detailed Discussion Over CSS Preprocessors

would have not completed, so i came to know much more in exploration from one of my favourite blogger, Writer Jeffrey Way. then getting some and writing more about the topic could be a beneficial approach for all visitors.

Tutorial Details

Earlier this month, a new specification, Filter Effects 1.0, was released. It presents some exciting new Photoshop-like effects that we can use in the browser. Even better, Webkit has already landed support (in the nightlies)!


According to the Spec…

“A filter effect is a graphical operation that is applied to an element as it is drawn into the document. It is an image-based effect, in that it takes zero or more images as input, a number of parameters specific to the effect, and then produces an image as output.”

Now, at least at this point, I wouldn’t presume to be able to show you everything that’s possible with these new filters. I’m still learning them myself! That said, I’ll show you a handful of the new filters, how we can use them in our projects, and then, hopefully, we can all brainstorm and learn from each other within the comments. Let’s get started.

Filters are typically associated with images (though they can also be applied to video). As such, for the handful of demos below, we’ll be using the Nettuts+ logo as input.

Nettuts+ Logo

Remember: these effects aren’t yet available in the public releases of Webkit browsers. For now, download Canary when testing these demos.


hue-rotate

Ever played around with the Hue/Saturation panel in Photoshop? Well now you can play around with it in the browser.

  1. img {
  2.    -webkit-filter: hue-rotate(50deg);
  3. }

If specifying this value in degrees seems confusing, just imagine a color wheel. The number of degrees you specify determines where that wheel stops. This means, that 0deg won’t do a thing, while 50deg will turn the dial, accordingly.

In this case, the Nettuts+ logo will take on a blu-ish hue.

Or, let’s say that you want your image to continuously change colors. Likely, in a real-world project, the color transitions will be far more subtle, but for this demo, we’ll be a bit obnoxious.

  1. img {
  2.    -webkit-animation: adjustHue 1s alternate infinite;
  3. }
  4. @-webkit-keyframes adjustHue {
  5.    0% { -webkit-filter: hue-rotate(30deg); }
  6.    50% { -webkit-filter: hue-rotate(60deg); }
  7.    100% { -webkit-filter: hue-rotate(90deg); }
  8. }

Simple enough. View Demo


grayscale

We’ve used a variety of hacks in the past to transition an image from black and white to color in the browser. One technique calls for two images stacked on top of one another. Another option is to use canvas. Or… we can use the grayscale filter.

  1. img {
  2.    -webkit-filter: grayscale(100%);
  3. }

When applying a percentage to the grayscale function, just think to yourself, “On a scale of 0 to 100%, how gray do I want this image to be?

When used in tandem with CSS3 transitions, we can apply a nice and clean hover effect.

  1. img {
  2.   -webkit-transition: -webkit-filter 1s;
  3. }
  4. img:hover {
  5.     -webkit-filter: grayscale(100%);
  6. }

In the future, you’ll want to provide prefixes for the other browsers, however, it’s not necessary at this point. No need in applying Mozilla transitions to accomodate for a filter that’s only implemented in Webkit (so far).

View Demo


sepia

Enjoy the sepia-flavored Instagram effect? Let’s see what Nettuts+ looked like in the old west.

  1. img {
  2.       -webkit-filter: sepia(100%);
  3. }

Typically, though, this effect is applied to photos. Let’s see how the greatest artist who ever lived looks in sepia.

Excellent.


blur

By passing a radius, we can blur an image in the browser with ease.

  1. img {
  2.       -webkit-filter: blur(2px);
  3. }

Or by upping the blur radius to 50px.


brightness

We use the brightness filter to specify…wait for it…how bright the input image should appear.

  1. img {
  2.       -webkit-filter: brightness(15%);
  3. }

Think of 100% as home base. brightness(100%) keeps the image unchanged. As we reduce this percentage, however, the image will continue to darken.

Don’t forget: you can combine all of these filters.

  1. img {
  2.       -webkit-filter: brightness(60%) sepia(100%);
  3. }

contrast

We can now adjust the contrast of an image quite easily.

  1. img {
  2.       -webkit-filter: contrast(200%);
  3. }

Once again, think of 100% as resting position. We can then reduce or increase this value to adjust the contrast of the image. According to the spec, applying a value of 0% should make the image 100% black, similar to what you might expect from -webkit-filter: brightness(0%);. However, I’m seeing more of a dark gray.

  1. img {
  2.       -webkit-filter: contrast(0%);
  3. }

Now if we up the percentage considerably, to 2000%:

  1. img {
  2.       -webkit-filter: contrast(2000%);
  3. }

Just for fun, let’s create a throbbing Matrix version of the Nettuts+ logo. We’ll combine CSS3 animations and filters.

  1. img {
  2.     -webkit-animation: bluePill 1s alternate infinite;
  3. }
  4. @-webkit-keyframes bluePill {
  5.    0% { -webkit-filter: contrast(2000%); }
  6.    100% { -webkit-filter: contrast(100%); }
  7. }

View Demo


invert

Mac users: press Control + Option + Command + 8. Notice how it inverts your screen (of course you noticed). I use this trick late at night when I’m reading on the computer, and my eyes are sore.

By applying a percentage of 100 to the new invert filter, we can achieve the exact same effect.

  1. img {
  2.       -webkit-filter: invert(100%);
  3. }

Note that 0% will leave the image unchanged.

Now, you could technically apply this to, say, the body of your website, and it would work. However, you’ll notice considerable slow down, and lose the ability to scroll the page. AKA – Don’t do it, except for fun.


saturate

In addition to setting grayscale(100%), we could also achieve a similar effect by desaturating the image entirely.

In this case, 100% is the unchanged state, at which point you can either decrease or increase this value. As such, reducing this value to 0% should remove all color from the image.

  1. img {
  2.       -webkit-filter: saturate(0%);
  3. }

Or, by upping the value to 700%:


That’s All For Now

Stay tuned to this article over the course of the next week. As these techniques are still super new, we all need time to figure out how to use them. I’ll update this article as I learn more!

A Detailed Discussion Over CSS Preprocessors

Tutorial Details

Wielding the true power of a CSS preprocessor is an adventure. There are countless languages, syntaxes, and features, all ready for use right now.

In this article, we will be covering the various features and benefits of using three different preprocessors—SassLESS, and Stylus.


Introduction

Preprocessors produce CSS that works in all browsers.

CSS3 preprocessors are languages written for the sole purpose of adding cool, inventive features to CSS without breaking browser compatibility. They do this by compiling the code we write into regular CSS that can be used in any browser all the way back to the stone ages. There are thousands of features that preprocessors bring to the table, and in this article we will cover some of the publicized ones, and some of the not-so-publicized ones. Let’s get started.


Syntax

The most important part of writing code in a CSS preprocessor is understanding the syntax. Luckily for us, the syntax is (or can be) identical to regular CSS for all three preprocessors.

Sass & LESS

Sass and LESS both use the standard CSS syntax. This makes it extremely easy to convert an existing CSS file to either preprocessor. Sass uses the .scss file extension and LESS uses the .less extension. The basic Sass or LESS file can be setup like below:

1
2
3
4
/* style.scss or style.less */
h1 {
  color: #0982C1;
}

As you may have noticed, this is just regular CSS, which compiles perfectly in both Sass and LESS.

It’s important to note that Sass also has an older syntax, which omits semicolons and curly brackets. Although this is still around, it is old and we won’t be using it past this example. The syntax uses the .sassfile extension and looks like this:

1
2
3
/* style.sass */
h1
  color: #0982c1

Stylus

The syntax for Stylus is much more verbose. Using the .styl file extension, Stylus accepts the standard CSS syntax, but it also accepts some other variations where brackets, colons, and semi-colons are all optional. For example:

1
2
3
4
5
6
7
8
9
10
11
12
/* style.styl */
h1 {
  color: #0982C1;
}
/* omit brackets */
h1
  color: #0982C1;
/* omit colons and semi-colons */
h1
  color #0982C1

Using different variations in the same stylesheet is also valid, so the following will compile without errors.

1
2
3
4
5
h1 {
  color #0982c1
}
h2
  font-size: 1.2em

Variables

Variables can be declared and used throughout the stylesheet. They can have any value that is a CSS value (e.g. colors, numbers [units included], or text.), and can be referenced anywhere throughout our stylesheet.

Sass

Sass variables are prepended with the $ symbol and the value and name are separated with a semicolon, just like a CSS property.

1
2
3
4
5
6
7
8
9
$mainColor: #0982c1;
$siteWidth: 1024px;
$borderStyle: dotted;
body {
  color: $mainColor;
  border: 1px $borderStyle $mainColor;
  max-width: $siteWidth;
}

LESS

LESS variables are exactly the same as Sass variables, except the variable names are prepended with the @symbol.

1
2
3
4
5
6
7
8
9
@mainColor: #0982c1;
@siteWidth: 1024px;
@borderStyle: dotted;
body {
  color: @mainColor;
  border: 1px @borderStyle @mainColor;
  max-width: @siteWidth;
}

Stylus

Stylus variables don’t require anything to be prepended to them, although it allows the $ symbol. As always, the ending semicolon is not required, but an equal sign in between the value and variable is. One thing to note is that Stylus (0.22.4) compiles if we prepend the @ symbol to a variable name, but will not apply the value when referenced. In other words, don’t do that.

1
2
3
4
5
6
7
8
mainColor = #0982c1
siteWidth = 1024px
$borderStyle = dotted
body
  color mainColor
  border 1px $borderStyle mainColor
  max-width siteWidth

Compiled CSS

Each of the above files will compile to the same CSS. You can use your imagination to see how useful variables can be. We will no longer need to change one color and have to retype it twenty times, or want to change our site width and have to dig around to find it. Here’s the CSS after compilation:

1
2
3
4
5
body {
  color: #0982c1;
  border: 1px dotted #0982c1;
  max-width: 1024px;
}

Nesting

If we need to reference multiple elements with the same parent in our CSS, it can be tedious to keep writing the parent over and over.

1
2
3
4
5
6
7
8
9
10
11
12
section {
  margin: 10px;
}
section nav {
  height: 25px;
}
section nav a {
  color: #0982C1;
}
section nav a:hover {
  text-decoration: underline;
}

Instead, using a preprocessor, we can write the children selectors inside the parent’s brackets. Also, the &symbol references the parent selector.

Sass, LESS, & Stylus

All three preprocessors have the same syntax for nesting selectors.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
section {
  margin: 10px;
  nav {
    height: 25px;
    a {
      color: #0982C1;
      &amp;:hover {
        text-decoration: underline;
      }
    }
  }
}

Compiled CSS

This is the compiled CSS from the code above. It is exactly the same as when we started—how convenient!

1
2
3
4
5
6
7
8
9
10
11
12
section {
  margin: 10px;
}
section nav {
  height: 25px;
}
section nav a {
  color: #0982C1;
}
section nav a:hover {
  text-decoration: underline;
}

Mixins

Mixins are functions that allow the reuse of properties throughout our stylesheet. Rather than having to go throughout our stylesheet and change a property multiple times, we can now just change it inside our mixin. This can be really useful for specific styling of elements and vendor prefixes. When mixins are called from within a CSS selector, the mixin arguments are recognized and the styles inside the mixin are applied to the selector.

Sass

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* Sass mixin error with (optional) argument $borderWidth which defaults to 2px if not specified */
@mixin error($borderWidth: 2px) {
  border: $borderWidth solid #F00;
  color: #F00;
}
.generic-error {
  padding: 20px;
  margin: 4px;
  @include error(); /* Applies styles from mixin error */
}
.login-error {
  left: 12px;
  position: absolute;
  top: 20px;
  @include error(5px); /* Applies styles from mixin error with argument $borderWidth equal to 5px*/
}

LESS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* LESS mixin error with (optional) argument @borderWidth which defaults to 2px if not specified */
.error(@borderWidth: 2px) {
  border: @borderWidth solid #F00;
  color: #F00;
}
.generic-error {
  padding: 20px;
  margin: 4px;
  .error(); /* Applies styles from mixin error */
}
.login-error {
  left: 12px;
  position: absolute;
  top: 20px;
  .error(5px); /* Applies styles from mixin error with argument @borderWidth equal to 5px */
}

Stylus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* Stylus mixin error with (optional) argument borderWidth which defaults to 2px if not specified */
error(borderWidth= 2px) {
  border: borderWidth solid #F00;
  color: #F00;
}
.generic-error {
  padding: 20px;
  margin: 4px;
  error(); /* Applies styles from mixin error */
}
.login-error {
  left: 12px;
  position: absolute;
  top: 20px;
  error(5px); /* Applies styles from mixin error with argument borderWidth equal to 5px */
}

Compiled CSS

All the preprocessors compile to the same code below:

1
2
3
4
5
6
7
8
9
10
11
12
13
.generic-error {
  padding: 20px;
  margin: 4px;
  border: 2px solid #f00;
  color: #f00;
}
.login-error {
  left: 12px;
  position: absolute;
  top: 20px;
  border: 5px solid #f00;
  color: #f00;
}

Inheritance

When writing CSS the old-fashioned way, we could use the following code to apply the same styles to multiple elements at once:

1
2
3
4
5
p,
ul,
ol {
  /* styles here */
}

That works great, but if we need to further style the elements individually, another selector has to be created for each and it can quickly get messier and harder to maintain. To counter this, inheritance can be used. Inheritance is the ability for other CSS selectors to inherit the properties of another selector.

Sass & Stylus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.block {
  margin: 10px 5px;
  padding: 2px;
}
p {
  @extend .block; /* Inherit styles from '.block' */
  border: 1px solid #EEE;
}
ul, ol {
  @extend .block; /* Inherit styles from '.block' */
  color: #333;
  text-transform: uppercase;
}

Compiled CSS (Sass & Stylus)

1
2
3
4
5
6
7
8
9
10
11
.block, p, ul, ol {
  margin: 10px 5px;
  padding: 2px;
}
p {
  border: 1px solid #EEE;
}
ul, ol {
  color: #333;
  text-transform: uppercase;
}

LESS

LESS doesn’t truly support inheriting styles like Sass and Stylus. Instead of adding multiple selectors to one set of properties, it treats inheritance like a mixin without arguments and imports the styles into their own selectors. The downside to this is that the properties are repeated in your compiled stylesheet. Here’s how you would set it up:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.block {
  margin: 10px 5px;
  padding: 2px;
}
p {
  .block; /* Inherit styles from '.block' */
  border: 1px solid #EEE;
}
ul, ol {
  .block; /* Inherit styles from '.block' */
  color: #333;
  text-transform: uppercase;
}

Compiled CSS (LESS)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.block {
  margin: 10px 5px;
  padding: 2px;
}
p {
  margin: 10px 5px;
  padding: 2px;
  border: 1px solid #EEE;
}
ul,
ol {
  margin: 10px 5px;
  padding: 2px;
  color: #333;
  text-transform: uppercase;
}

As you can see, the styles from .block were inserted into the selectors that we wanted to give the inheritance to. It’s important to note that priority can become an issue here, so be cautious.


Importing

In the CSS community, importing CSS is frowned upon because it requires multiple HTTP requests. Importing with a preprocessor works differently, however. If you import a file from any of the three preprocessors, it will literally include the import during the compile, creating only one file. Keep in mind though that importing regular .css files compiles with the default @import "file.css"; code. Also, mixins and variables can be imported and used in your main stylesheet. Importation makes creating separate files for organization very worthwhile.

Sass, LESS, & Stylus

1
2
3
4
/* file.{type} */
body {
  background: #EEE;
}
1
2
3
4
5
6
@import "reset.css";
@import "file.{type}";
p {
  background: #0982C1;
}

Compiled CSS

1
2
3
4
5
6
7
@import "reset.css";
body {
  background: #EEE;
}
p {
  background: #0982C1;
}

Color Functions

Color functions are built in functions that will transform a color upon compilation. This can be extremely useful for creating gradients, darker hover colors, and much more.

Sass

1
2
3
4
5
6
7
8
9
10
11
lighten($color, 10%); /* returns a color 10% lighter than $color */
darken($color, 10%);  /* returns a color 10% darker than $color */
saturate($color, 10%);   /* returns a color 10% more saturated than $color */
desaturate($color, 10%); /* returns a color 10% less saturated than $color */
grayscale($color);  /* returns grayscale of $color */
complement($color); /* returns complement color of $color */
invert($color);     /* returns inverted color of $color */
mix($color1, $color2, 50%); /* mix $color1 with $color2 with a weight of 50% */

This is only a short list of the available color functions in Sass, a full list of available Sass color functions can be found by reading the Sass Documentation.

Color functions can be used anywhere that a color is valid CSS. Here’s an example:

1
2
3
4
5
6
$color: #0982C1;
h1 {
  background: $color;
  border: 3px solid darken($color, 50%);
}

LESS

1
2
3
4
5
6
7
8
9
10
lighten(@color, 10%); /* returns a color 10% lighter than @color */
darken(@color, 10%);  /* returns a color 10% darker than @color */
saturate(@color, 10%);   /* returns a color 10% more saturated than @color */
desaturate(@color, 10%); /* returns a color 10% less saturated than @color */
spin(@color, 10);  /* returns a color with a 10 degree larger in hue than @color */
spin(@color, -10); /* returns a color with a 10 degree smaller hue than @color */
mix(@color1, @color2); /* return a mix of @color1 and @color2 */

A list of all the LESS functions can be found by reading the LESS Documentation.

Here’s an example of how to use a color function in LESS:

1
2
3
4
5
6
@color: #0982C1;
h1 {
  background: @color;
  border: 3px solid darken(@color, 50%);
}

Stylus

1
2
3
4
5
lighten(color, 10%); /* returns a color 10% lighter than 'color' */
darken(color, 10%);  /* returns a color 10% darker than 'color' */
saturate(color, 10%);   /* returns a color 10% more saturated than 'color' */
desaturate(color, 10%); /* returns a color 10% less saturated than 'color' */

A full list of all the Stylus color functions can be found by reading the Stylus Documentation.

Here’s an example using Stylus color functions:

1
2
3
4
5
color = #0982C1
h1
  background color
  border 3px solid darken(color, 50%)

Operations

Doing math in CSS is quite useful, and now fully possible. It’s simple and this is how to do it:

Sass, LESS, & Stylus

1
2
3
4
5
6
body {
  margin: (14px/2);
  top: 50px + 100px;
  right: 100px - 50px;
  left: 10 * 10;
}

Practical Applications

We have covered a lot of the features and new things that preprocessors can do, but we haven’t covered anything hands-on or practical. Here’s a short list of real-world applications where using a preprocessor is a life-saver.

Vendor Prefixes

This is one of the hyped up reasons to use a preprocessor and for a very good reason—it saves loads of time and tears. Creating a mixin to handle vendor prefixes is easy and saves a lot of repetition and painful editing. Here’s how to do it:

Sass

1
2
3
4
5
6
7
8
9
@mixin border-radius($values) {
  -webkit-border-radius: $values;
     -moz-border-radius: $values;
          border-radius: $values;
}
div {
  @include border-radius(10px);
}

LESS

1
2
3
4
5
6
7
8
9
.border-radius(@values) {
  -webkit-border-radius: @values;
     -moz-border-radius: @values;
          border-radius: @values;
}
div {
  .border-radius(10px);
}

Stylus

1
2
3
4
5
6
7
8
9
border-radius(values) {
  -webkit-border-radius: values;
     -moz-border-radius: values;
          border-radius: values;
}
div {
  border-radius(10px);
}

Compiled CSS

1
2
3
4
5
div {
  -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
          border-radius: 10px;
}

3D Text

Faking 3D text using multiple text-shadows is a clever idea. The only problem is that changing the color after the fact is difficult and cumbersome. Using mixins and color functions, we can create 3D text and change the color on the fly!

Sass

1
2
3
4
5
6
7
8
9
10
11
12
13
@mixin text3d($color) {
  color: $color;
  text-shadow: 1px 1px 0px darken($color, 5%),
               2px 2px 0px darken($color, 10%),
               3px 3px 0px darken($color, 15%),
               4px 4px 0px darken($color, 20%),
               4px 4px 2px #000;
}
h1 {
  font-size: 32pt;
  @include text3d(#0982c1);
}

LESS

1
2
3
4
5
6
7
8
9
10
11
12
13
.text3d(@color) {
  color: @color;
  text-shadow: 1px 1px 0px darken(@color, 5%),
               2px 2px 0px darken(@color, 10%),
               3px 3px 0px darken(@color, 15%),
               4px 4px 0px darken(@color, 20%),
               4px 4px 2px #000;
}
span {
  font-size: 32pt;
  .text3d(#0982c1);
}

Stylus

1
2
3
4
5
6
text3d(color)
  color: color
  text-shadow: 1px 1px 0px darken(color, 5%), 2px 2px 0px darken(color, 10%), 3px 3px 0px darken(color, 15%), 4px 4px 0px darken(color, 20%), 4px 4px 2px #000
span
  font-size: 32pt
  text3d(#0982c1)

I chose to write the Stylus text-shadows on one line because I omitted the curly brackets.

Compiled CSS

1
2
3
4
5
6
7
8
9
span {
  font-size: 32pt;
  color: #0982c1;
  text-shadow: 1px 1px 0px #097bb7,
               2px 2px 0px #0875ae,
               3px 3px 0px #086fa4,
               4px 4px 0px #07689a,
               4px 4px 2px #000;
}

End Result

Columns

Using number operations and variables for columns is an idea I came up with when I was first playing with CSS preprocessors. By declaring a desired width in a variable, we can easily change it down the road without any mental-math. Here’s how it’s done:

Sass

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$siteWidth: 1024px;
$gutterWidth: 20px;
$sidebarWidth: 300px;
body {
  margin: 0 auto;
  width: $siteWidth;
}
.content {
  float: left;
  width: $siteWidth - ($sidebarWidth+$gutterWidth);
}
.sidebar {
  float: left;
  margin-left: $gutterWidth;
  width: $sidebarWidth;
}

LESS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@siteWidth: 1024px;
@gutterWidth: 20px;
@sidebarWidth: 300px;
body {
  margin: 0 auto;
  width: @siteWidth;
}
.content {
  float: left;
  width: @siteWidth - (@sidebarWidth+@gutterWidth);
}
.sidebar {
  float: left;
  margin-left: @gutterWidth;
  width: @sidebarWidth;
}

Stylus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
siteWidth = 1024px;
gutterWidth = 20px;
sidebarWidth = 300px;
body {
  margin: 0 auto;
  width: siteWidth;
}
.content {
  float: left;
  width: siteWidth - (sidebarWidth+gutterWidth);
}
.sidebar {
  float: left;
  margin-left: gutterWidth;
  width: sidebarWidth;
}

Compiled CSS

1
2
3
4
5
6
7
8
9
10
11
12
13
body {
  margin: 0 auto;
  width: 1024px;
}
.content {
  float: left;
  width: 704px;
}
.sidebar {
  float: left;
  margin-left: 20px;
  width: 300px;
}

Notable Quirks

There are quite a few quirks to using a CSS preprocessor. I’m going to go over a few of the fun ones, but if you’re really interested in finding them all I recommend you scour the documentation or, better yet, just start using a preprocessor in your daily coding.

Error Reporting

If you’ve written CSS for any decent amount of time, I am sure you have reached a point where you had an error somewhere and simply could not find it. If you’re anything like me you probably spent the afternoon pulling your hair out and commenting out various things to hunt the error down.

CSS preprocessors report errors. It’s just that simple. If there’s something wrong with your code it tells you where, and if you’re lucky: why. You can check out this blog post if you’re interested in seeing how errors are reported in the different preprocessors.

Comments

When compiling with a CSS preprocessor, any double-slash comment gets removed (e.g. //comment) and any slash-asterisk comment stays (e.g. /* comment */). That being said, use double-slash for comments you want on the non-compiled side and slash-asterisk for comments you want visible after the compilation.

Just a note: if you compile minified, all comments are removed.


Conclusion

Each CSS preprocessor we covered (Sass, LESS, and Stylus) has its own unique way of accomplishing the same task— giving developers the ability to use useful, unsupported features while keeping browser compatibility and code cleanliness.

While not a requirement for development, preprocessors can save a lot of time and have some very useful features.

I encourage you all to try as many of the preprocessors as possible so that you can effectively choose a favorite and know why it is favored over the numerous others. If you haven’t yet tried using a preprocessor to write your CSS, I highly recommend you give it a try.

Do you have a favorite CSS preprocessor feature I didn’t mention? Is there something one can do that another cannot? Let us know in the comments below!

A detailed Discussion over Pros and Cons of Web Based Operating systems

Web-based operating systems, such as Google’s Chrome OS, and new Chromebooks — notebooks built around the Chrome OS — have both received a lot of attention in the press. The question is do they make sense for small business?

If you haven’t heard of Chrome OS, then maybe you’re familiar with the Chrome Web browser? The Chrome OS is essentially a bootable version of the Chrome Web browser, and it replaces a traditional operating system like Windows.

Unlike most operating systems, Chrome OS stores all of a user’s applications and data on the Web, as opposed to a local hard drive. Although much more limiting then a traditional operating system, a browser-based OS offers huge advantages that can make it a compelling option for small businesses. Let’s take a closer look at the pros and cons.

The Advantages of a Web-based OS

Chromebooks start up quickly — in about 10 -15 seconds — which is significantly faster than any Windows PC. Plus, their impressive battery life lets you work an entire day on a single charge. More importantly, Chromebooks practically eliminate time-consuming IT tasks such as building system images, troubleshooting small business software or spending hours cleaning virus-infected systems.

Moreover, with all of a user’s data and applications relegated to the cloud, employee responsibilities such as maintaining the latest virus definitions, updating software or even performing daily backups are now automatically managed by Google. And, since a computer with a browser-based OS stores everything on the Web, data loss due to damage or to a lost or stolen computer is all but eliminated.

In fact, moving to new hardware involves nothing more than turning on the new machine and logging in. No need to transfer data, reinstall applications or even wait for IT assistance.

What we find most attractive about this concept, though, is how cost effective it could be. Google — making a hard push to get people to buy into the benefits of a browser-based OS — claims that companies can reduce their total cost of ownership by up to 70 percent over traditional PCs.

To that end, Google is offering small businesses and non-profit organizations the capability to lease Chromebooks in bulk for $28 a month per user. Educational institutions receive an even better deal at only $20 a month.

That price includes tech support, rapid hardware replacement, automatic background updates, a Web-based management console for IT professionals (for managing users, apps, and policies), and a hardware refresh every three years. For many businesses, potential savings of that magnitude are hard to ignore and definitely bear further investigation.

In spite of how good a deal this might be, not everyone will or should transition to this platform (graphics designers, accountants and architects come to mind). But if your employees only need to browse the Web, access email, and use typical office applications like a word processor, spreadsheet or presentation software, then a browser-based OS like Chrome OS might work for your business.

Google estimates that most companies will be able to transition approximately 75 percent of their employees over to its platform. Additional applications are available via the Chrome App Store. And before you ask, yes Angry Birds is available.

The Downside of Web-Based OS

While a browser-based OS offers plenty of benefits, it’s also hampered by severe limitations. Most notably: everything is stored in the cloud. If you’re working from the office or your home, that’s generally not a concern. However if you travel, accessing a reliable and fast broadband connection can be tricky. Many areas have dead zones, limited coverage and inconsistent throughput rates.

Complicating matters further, many wireless ISPs impose a data cap on their mobile broadband service. A computer that requires constant online access to transmit data or stream music and video could hit those caps very quickly. It wouldn’t be as troubling if you could work offline, but the majority of apps currently available for Chrome OS won’t work without a broadband connection. This makes working while traveling difficult or, in some cases, impossible.

Other issues include the lack of proper VPN support, limited file management and some weird browser compatibility issues that prevent some websites from loading or functioning correctly. And, while the Chrome App Store offers a wide variety of apps, it’s still rather limited. As a result, finding what you need can sometimes prove difficult.

Regardless of these shortcomings, the Chrome OS offers plenty of value. The best way to decide whether a browser-based OS is appropriate — for all or part of your organization — is to try one. Unfortunately, you can’t download Google’s Chrome OS directly. However these alternatives will introduce you to the browser-based OS concept first hand.

Alternatives to Chrome OS

The Web-based OS that comes closest to Chrome OS is called, ironically enough, Chrome OS Linux. This version provides a lightweight Linux distribution, compatible with almost any x86 PC or notebook equipped with at least 256MB of RAM and a 1GB HD. It’s highly representative of the experience you get working on a Chromebook.

Chrome OS Linux is available as a live CD; you can test it out on any computer without actually installing it. And, since Chrome OS Linux provides you with almost everything you get from a Chromebook, you can continue to use it on all of your existing systems without paying Google $28 a month for its hardware.

Other Web-based OSes offer similar functionality. Two of the most popular are Joli OS from Jolicloud and Splashtop OS. Unlike a Chromebook, however, both of these products are designed to be used as a supplement to Windows, not a replacement. You simply select which OS you’d like to use when the PC starts.

Installing either product is risk-free as only the installer runs in Windows, and it won’t affect your settings, files, applications or personal data. There could be some compatibility issues — we discovered that Joli OS worked fine on our Dell Latitude D620, but not on our Dell Latitude e5400. Seems it didn’t support that particular network adapter.

Splashtop also had issues as it only officially supports about a dozen HP systems. However it worked fine on our Dell Latitude D620. Bottom line, you have nothing to lose by installing it on your system. It will either work or it won’t.

The last alternative is called Presto. Unlike the other OSes mentioned here, Presto can work offline. While we don’t consider Presto a replacement for Windows the way Chrome OS is, it provides many of the same benefits.

In our test, we started Presto and got on the Web in less than 13 seconds. You can send email, IM clients and browse the Web via Firefox. And unlike Chrome OS, you can edit Office documents, listen to music or even watch videos offline. Presto also differs in that it’s not a free application. You can try it free for 7 days, after that it will cost you $19.95.

Even though none of the operating systems we discussed here are as feature rich or flexible as your typical Windows PC, they each offer something of value. We recommend that you give each a closer look.

a list of such operating Systems can be seen over a list of online and web based operating systems

%d bloggers like this: