WebsiteWizard is a turn-key, all-in-one, do-it-yourself suite for building an online business. It lets *anyone* create a site, take orders, distribute e-products. All this and more without any technical skills or programmers to hire.
| My Search Story. Enjoyment for Web Masters | ||
| My Search Story. Enjoyment for Web Masters. See the No.1 Search Engine Listings in the story. |
Save the Internet. Net Neutrality The Freedom of the Internet is at stake. Watch and Read NOW!! It's YOUR FREEDOM they my stop.
| Net Neutrality YouTube Video |
Net Neutrality. The Freedom of the Internet is at stake. Watch and Read NOW!! It's YOUR FREEDOM they may stop. |
|
| Red Alert - Protect IP SOPA Bills Would KILL Alternative Media & Internet As We Know It! Eyezopenwide2 YouTube Channel | READ THE ARTICLE AND SPREAD THE WORD It'll give the government new powers to block Americans' access websites that corporations don't like. The bill would criminalize posting all sorts of standard web content -- music playing in the background of videos, footage of people dancing, kids playing video games, and posting video of people playing cover songs. ALERT: SOPA Bill Could Kill Alternative Media SOPA Causes Anonymous To Declare Operation Blackout PROTECT IP / SOPA Act Breaks the Internet Sign against the Bill NOW!!!. Congress needs to hear from you, or this bill passes Artists opposing the PROTECT-IP / SOPA Act. An open letter to the US Senate and House of Representatives
PROTECT IP Act, S.968 - PROTECT IP Act of 2011 A bill to prevent online threats to economic creativity and theft of intellectual property, and for other purposes. Establishes a system for taking down websites that the Justice Department determines to be "dedicated to infringing activities." The DoJ or the copyright owner would be able to commence a legal action against the alleged infringer and the DoJ would be allowed to demand that search engines, social networking sites and domain name services block access to the targeted site. In some cases, action could be taken to block sites without first allowing the alleged infringer to defend themselves in court. |
|
| Google Web Master Tools Google Information | These are Web Master Tools provided by some of the top search engines. Submit Web Sites, Submit Web Site Feeds, Help Analyses Web Site Traffic, Check Web Sites Pages for errors, May even report virus on your Web Site, and more... |
Yahoo Site Explorer system similar to Google Web mater Tools has now been transfer to Bing Webmaster Tools. Yahoo Information also Bing Information
Site Explorer SEO Tools, Tips, and Alternatives to Yahoo Site Explorer! Top 10 Yahoo Site Explorer Alternatives. Since the demise of Yahoo Site Explorer, we have reviewed many Site Explorer alternatives to helping you review and analyze backlinks to any given website. If you are looking for a backlink checker, we have put together our scoring matrix of features in a backlink explorer to better help you decide which tools are worth spending time on and adding to your arsenal. We’ve run across many tools we were previously unfamiliar with, and there will surely be more to come!. Analyzing back-links has never been so easy, so you can now check your backlinks with ease once you decide on which tools are right for you. Google Webmaster Tools and Bing Webmaster Tools information by Site Explorer
Learn more about IPv6 readiness From Yahoo. World IPv6 day is 8 June 2011. This is a 24-hour trial period in which a number of major websites including Yahoo! will provide their content on both the IPv4 and IPv6 servers. This initiative is led by the Internet Society (ISOC). More about IPv6
The Internet Society (ISOC) is a nonprofit organisation founded in 1992 to provide leadership in Internet related standards, education and policy. The Internet Society are dedicated to ensuring the open development, evolution and use of the Internet for the benefit of people throughout the world. The Internet Society have developed four future Internet scenarios that reveal plausible courses of events that could impact the health of the Internet in the future. View them now.... The Internet Society Guide to Internet Law. More about Internet Law
Google Knowledge. Google Information
W3C Link Checker Check links and anchors in Web pages or full Web sites.
SEO Analyzer (From Google Code) is a desktop based application build specifically for page rank checking, link analysis and keyword analysis for
SEO, search engines optimization purpose. It is built using Adobe AIR.
It includes
Google PageRank Checker,
Link Analysis,
Keyword, Keyword Phrases Analysis Tool. There is a handy little too at Google for checking the recent history on domains which is well worth using when link building (link exchanges, link drops) as well as checking websites you may be linking out to within your content or blog posts, (Just does provides basic report on the website) :-
Backlinks SEO Tool "Every webmaster
knows that to get to the top of Google for the issuance of any keyword, you
need to start to undertake a qualitative analysis. This tool allows you to
assess the competition for a given keyword in such basic criteria as a
Backlinks and PageRank."
Also Check for content duplicates check for uniqueness. This tool shows in percentage
how unique you entered text. If the result is less than 70% means there is already such a text on other sites. :-
Also see Page Rank. Website Review, Ratings and URL listing tests
Yahoo Knowledge. Yahoo Information
Bing is a search engine that finds and organizes the answers you need so you can make faster, more informed decisions.
Bing Webmaster Tools To improve your site's SEO, submit your sites and XML-based Sitemaps to Bing, get data on which pages of your site have been indexed, backlinks, inbound links and keyword performance.
Bing UK business suggest your information to Bing To see a short video about My 118 Information click here Get your business listed in lots of places. BOSS Links. Business Online Support Service. Some links that should be useful to businesses. Employment law, tax, market research. Business advice, European law, business to business information, grants, business start ups, etc. Useful Small business and Self Employed links. Government Grants, Tax back, Inventions and much more... Click here to submit to the BOSS Links. Business Online Support Service site.)
SeoDump. Free Seo and Webmaster Tools on Internet. Free and 100% Accurate Seo Tools to Analyze page or Website optimization with Research & Testing resources. Worlds best Webmaster Tools. Lots' of free helpful Tools for Web Masters to Check and Grow their web sites for free.
My 118 Information Get your Business listed in lots of places.
SEO Workers SEO Analysis Tool Helps you analyze and measure the ranking potential of your web pages. It doesn't only analyze the Meta Tags of your pages, rather it tries to use the same spider technology as the search engines spiders themselves
Webmaster Toolkit have a number of useful Webmaster Tools for example the HTTP Header Viewer will show you the exact HTTP headers that a web server is sending with a HTTP response. This can be useful if you need to know what cookies are being set or where any re-directs are going to, along with other details such as mime-type. Also see Mime Computer Code Types. Mime Types. File types, etc...
Link Validation. HTML Validation. Link Checking. Link Verification. Web Page Validation
Free Broken Link Checker Checks both Internal Links and Links to an external page. Displays the Anchor Text for the link and its URL, Checks Image links, Links in the page header e.g. CSS file links, Provides a Summary reports ,etc.. Link Rot Matters Link rot (or linkrot) is an informal term for the process by which, either on individual websites or the Internet in general, increasing numbers of links point to web pages, servers or other resources that have become permanently unavailable. The phrase also describes the effects of failing to update out-of-date web pages that clutter search engine results. A link that doesn't work anymore is called a broken link, dead link or dangling link. Because broken links are, to some people, very annoying, are generally disruptive to the user experience, and can live on for many years, sites containing them are regarded as unprofessional.
Page Rank. Website Review, Ratings and URL listing tests
Web Master Law. Legal issues for Web Masters.
Who is Tools. DNS Tools, Domain Name System Tools.
Feed the bot This website is for those who want to follow the Google webmaster guidelines, but seek more definitions, explanations and examples than Google provides in their documentation. This website describes each guideline in terms that just about anyone can understand. Learn more Also see Google Knowledge. Google Information
Squish DNS checker... This is a free web-based service for DNS experts.
30 Must See Web Generator for Lazy Webmasters. Smart webmasters do not work everything out from scratch; instead, we make good use of the free tools available online. There are tons of brilliant web tools available online' it's a waste not to leverage these tools and save some working time (or, to have more time for beer). In this article, Must-have list of 30 web design tools, you'll find them useful, A thank you all the developers who had done a ton of skilled coding to help made website design easier.
HTTP Status Codes. FTP Status Codes. Website Error Codes. Domain Error Codes
cPanel. FTP. File Transfer Protocol. Hosting. Website Hosting
Forums. Computing Forums. Webmaster Forums, Programming Forums
URL Rewriting Tool. This tool helps you convert dynamic URLs into static looking html URLs. More Domain Names for sale. Sell your Domain Names and Short URL Names
A Great Portal, Great links to great web sites. Special offers and bargains, cutting edge technology, useful business links, career links, humour, fun, sports. Computing, Freeware, Programming. Free website promotion. Lifestyle, Film, Music, Games, Entertainment, Art, Theatre, Concerts, Literature, Leisure, Days Out, Tourism, Travel and Holidays. A crazy dancing sheep and other jokes. Relaxation and stress information. Lots of various and interesting subjects. Multi-search and news headlines search. Teenager pages. Jigsaw puzzles and much more.
Advertise on A Great Portal. Paid Inclusion Targeted Traffic Listing lots of Targeted Searchable Keywords and Static Page links. Sponsored searchable links: Specific links relating to the subject matter of the site. Your details will be displayed and users will be able to search on Keywords in the Title, icons, description, specialties, extra keywords, contact details and URL you provide. We will provide you with Lots of Searchable Keywords plus Static Page links. Individually targeted for Employment, Business, Science and Technology, Computing both hardware and software Entertainment or Sport. More Website promotion. Internet advertising . DOT Solutions. Digitally Orientated Technologies. Helping people and smaller businesses increase their brand image. Low budget providers of Web & WAP (Wireless Applications Protocol) solutions. Methods of Internet adverting free tips.
TrafficSeeker. Packed with TONS of new features to get your site better rankings in the search engines. The Pro version submits your site to over 200,000 engines and the Platinum to over 1 Million engines including Google, Yahoo, HotBot, Dmoz and many more! PLUS lot's of other places >>>> Program details of how to Automatically achieve this while you sleep... Includes many powerful features to help drive traffic to your website! With more than 20 critical tools included in TrafficSeeker for optimal promotion of your website. Here are just a few: Submit Your website to more than 1.2 Million Search Engines, Directories and Link pages. Link Popularity Tracking Tool. Keyword Builder - find and use the best keywords to drive traffic to your site. HTML Validator - make sure your site is ready for search engine indexing. Website Ranking Utility. Create, Manage, Add and Edit your own search engine databases. And tons more!! Click here for more information on TrafficSeeker.
DOT Solutions Helping people and smaller businesses increase their brand image. Low budget providers of Web & WAP (Wireless Applications Protocol) solutions. Also web & WAP sites promotion.
Prosper202 provides pay per click affiliate marketers with free leading edge self hosted ppc softwarer. Prosper202 is an open source free software. Since the beginning of Prosper202, they have provided free support, updates, and resources to help the community around the clock without question.
Browsealoud is a solution that allows you the option of having website content read to you. As the you move the cursor over text, it is spoken aloud. Browsealoud is free to download and you have control over the voice, word pronunciations and speech highlighting. Browsealoud is a subscription-based solution to speech enable website content. It is unique in its delivery concept. The software is free to download and the information service provider pays an annual charge to speech enable their web site. Browsealoud enabling your web site will assist in the navigation of your site.
Sitemaps Yahoo and Google announced a collaborative site called Sitemaps.org Watch this Video. A single way to submit sitemaps to both Google and Yahoo. More information about Google Site Map Yahoo Site Map, Yahoo Site Explorer. Not only are Google and Yahoo collaborating on this project, they've also issued an open invitation to the other search engines willing to join. Microsoft accepted that invitation and will jointly support Sitemaps.org and its efforts. More about SiteMaps.
77 Free SEO Tools. These are here help improve your seo, web design and link building campaigns.
Mypagerank Site Map Submitter. With this tool you can directly notify Google, Yahoo!, Ask and Moreover about your new or updated sitemap file.
|
Web2FTP, access any FTP account through a Web interface - no matter whether there is a firewall or not. You can use Web2FTP for the complete administration of your homepage, downloading files or just making small changes. |
|||||||
PC Security Software Protection Range. Anti-virus, Firewall, Privacy Defender, Spam Shield, Popup Blocker, Delete files PERMANENTLY, etc...
WSTOOL is OS-independence Web vulnerable scanner.
Advertising Methods FREE TIPS Advertising Methods. How to advertise online and offline. Methods of internet advertising and promotion. Here are some advertising methods that you may have considered to promote websites. Covers on-line and off-line adverting methods. The advantages and disadvantages of advertising methods and recommended ways to advertise. Don't get caught in a Mousetraps. Should you use Pixecode (Pixel Encoding), what is Pixecode (Pixel Encoding)? I've heard about Blogging, tell me more. Worried about Hidden Expenses, what are they, find out now. How about Video and Multimedia, how do I go about it and is it recommended? Lot's more FREE How much does the information cost me? It's FREE, I don't even ask for your email so don't worry about being added to Spam list and no need to register to get this FREE information. information, tips and advice.
Free PC Scan Windows Registry Repair
Earn money with your unused domain names. Find great domain names for your business.
Name Drive Generate Cash from your Domain name. Buy sell Domain Names. Park your Domain and make money while waiting for the sale. No charge and no contract.
Name Drive. You Park your domains for one month. We review the traffic on the domain.
At the end of the month, contact us should you desire to sell for a minimum of 6 months revenue or higher.
Generally sales follow these guidelines:
a. For a domain with a possible commercial value - 6 months revenue or higher.
b. For a quality typo - 6 to 36 months revenue or higher.
c. For Generic names - 60 to 96 months revenue or higher.
* We do not limit the max price of the offer. The buyer is required to offer a minimum of 6 months revenue for domains he/she deems to have positive commercial value. All buyers are private investors and do not represent Name Drive. All fees are paid by the buyer.
IMPORTANT: Should you allow your domain to be cancelled, the Registry will hold the name in a Redemption Period for 30 days. During this time, the domain name will be removed from the zone files (the list of domains currently in the global DNS); therefore, any Web site or email services associated with the domain name will stop working. The original domain registrant may retrieve the domain name from deletion during this period for a fee.
Best selling Internet Items from Amazon
Jawfish - RSS to JavaScript Conversion Service Compare CaRP Free, CaRP Koi and CaRP Evolution SEO: Boost your search engine position by using RSS to increase website relevance and freshness Put your website on autopilot using automatically updated, topical content.
Tetra - DHTML scroller with RSS feed integration
Two simple steps to higher search engine placement
RSS solves all these common website problems
Preparing Your Website for Internet Explorer 8 (IE8) The release candidate for Internet Explorer 8 has been released, with the final version just around the corner. IE8 brings substantial changes to the way the browser deals with a website, so it wouldn't do to simply regard this as just another run-of-the-mill release of a browser. Also see Browser and Browser Tools
Redalkemi web tools (Ton's of Tools and Utilities for Web Masters). Worlds Best Online SEO Tools Collection Check out our one-stop tools collection for links to the best online Tools on the Internet. The collection includes SEO, Link Building, System Admin, Webmaster and Web Developer Tools. More about SEO, search engines optimization
The Site Wizard Website design, promotion, programming and revenue making. More about Making Money from the Internet
Hosting Question you should ask
Link Popularity Check Freeware. Free link popularity check. A free link popularity check software program for you. If you want to find out how many web pages link to your site, download this software. Link Popularity Check is a freeware program that checks the link popularity of your web site on several search engines and compares it to other web sites on the Internet. You can quickly find out how many people link to your site, how many sites link to your competitors and how you compare to other sites. Screenshot.
Freeware, Software, Applications, Tools and Resources (Lot's of Tools, etc)
W3C The World Wide Web Consortium (W3C) develops interoperable technologies (specifications, guidelines, software, and tools) to lead the Web to its full potential. W3C is a forum for information, commerce, communication, and collective understanding. On this page, you'll find W3C news, links to W3C technologies and ways to get involved. New visitors can find help in Finding Your Way at W3C. We encourage organizations to learn more about W3C and about W3C Membership.
W3C Web Accessibility Initiative (WAI) WAI: Strategies, guidelines, resources to make the Web accessible to people with disabilities.
Web Content Accessibility Guidelines (WCAG) 1.0
Web Content Accessibility Guidelines (WCAG) 2.0he Hidden Nuggets of WCAG2, (Web Content Accessibility Guideline 2): An Introduction. A series of articles, talking about all the big issues in accessibility: images and alt attributes, video, keyboard accessibility, forms, tables, skip links and many more. Including concrete examples and actual code that you can implement as well as linking to useful how-to guides. This series of articles serves to simplify some of the more confusing areas of WCAG2.
The World Wide Web Consortium Tips for Webmasters
Google Web Toolkit (GWT) is a development toolkit for building and optimizing complex browser-based applications. GWT is used by many products at Google, including Google Wave and Google AdWords. It's open source, completely free, and used by thousands of developers around the world. Productivity for developers, performance for users Version 2.0 with Speed Tracer now available. Productivity for developers, performance for users Version 2.0 with Speed Tracer now available. A new tool built using modern HTML5 technologies that allows developers to diagnose performance problems in the browser, providing insight that hasn't been available before about low-level operations deep within the browser. Also view Google Knowledge. Google Information
Security Protector Free security utility enables you to protect your PC by disabling some features like: use of the MS-DOS command prompt in Windows and real mode DOS applications from within the Windows shell.
| Hacking Tip: How To Use Proxies TinkerNut YouTube Channel | ||
Proxies are great for surfing the web anonymously. This video will show you how to set up them up and use them. Foxy Proxy (FireFox) More Browser Links Proxy Switchy (Google Crome) More Browser Links |
Tor Project is free software and an open network that helps you defend against a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security. Tor Project protects you by bouncing your communications around a distributed network of relays run by volunteers all around the world: it prevents somebody watching your Internet connection from learning what sites you visit, and it prevents the sites you visit from learning your physical location. Tor works with many of your existing applications, including web browsers, instant messaging clients, remote login, and other applications based on the TCP protocol. More Security Information Links
Standards Suck Unbiased journalism on Web standards since May 2008
Webuildpages Tools Backlinks, Same C Class Back links, Forward linking tool, Keyword Reports, Deep linking, Spider reports... and many more SEO Tools for webmasters.
SiteReportCard provides free website analysis, optimization and promotion reports. Our tools offer valuable information to help improve your web pages and increase your search engine ranking. We provide detailed reports on various aspects of your web pages including:
|
|
|
Multi-Meta-Maker Meta Tags.
Ecma Standards Index Ecma International is an industry association founded in 1961 and dedicated to the standardization of Information and Communication Technology (ICT) and Consumer Electronics (CE).
WAVE is a free, web-based tool to help Web developers make their Web content more accessible. Developed in conjunction with the Temple University Institute on Disabilities, WAVE allows anyone to quickly and effectively.
Markup Validation Service Check the markup (HTML, HTML 5, XHTML) of Web documents.
|
|
Search Engines are known to negativly act upon websites that contain Duplicate / Similar content. Your content could be similar to other websites on the Internet, or pages from within your own website could be similar to each other (usually the case with dynamic product catalog pages). This tool allows you to determine the percentage of similarity between two pages. The exact percentage of similarity after with a search engine may penalize you is not known, it varies from search engine to search engine. Try to keep your page similarity as LOW as possible. More about Duplicate Content |
MUTAT - a human-centered testing tool (framework). MUTAT is a simple cgi script to demonstrate possible uses of EARL, and also use of RDF to configure an application. It is designed to help perform Quality Assurance evaluation tasks.
EARL - the Evaluation And Report Language
Internet Explorer 8 Add-On e.g. Web Slices Gallery More about Web Slices
Microsoft Web Application Stress Tool. The Microsoft web stress tool is designed to realistically simulate multiple browsers requesting pages from a Web site.
Page Rank. Website Review, Ratings and URL listing tests
Smileycat Blog Web Design Blog. More Blogs.
WebScarab is a Web Application Review tool. It sprang from the designs of the people inhabiting the WebAppSec list run from SourceForge, for a powerful, free, open tool for reviewing web applications for security vulnerabilities. Not much of the original design has actually been implemented as envisioned. WebScarab started as a spider that could download all the pages on a site. It stayed that way for almost a year, before I decided to take lessons learned during the development of Exodus and implement them as part of WebScarab.
OWASP project is a collection of related tasks that have a defined roadmap and team members. OWASP project leaders are responsible for defining the vision, roadmap, and tasks for the project. The project leader also promotes the project and builds the team. The Open Web Application Security Project (OWASP) is dedicated to finding and fighting the causes of insecure software. Everything here is free and open source. The OWASP Foundation is a 501c3 not-for-profit charitable organization that ensures the ongoing availability and support for our work. Participation in OWASP is free and open to all.
Marketing Terms Internet marketing reference and index of the best sites & articles.
|
|
SEOpen is a Firefox extension that provides numerous SEO tools at the click of a mouse. All of its features can be easily accessed by right-clicking on a web page.
Adblock extension in Firefox. Or Opera's new content blocker. Free Internet Explorer Debugging Tool Expression Web SuperPreview for Internet Explorer is a free stand-alone visual debugging tool that makes it faster and easier to migrate your sites from Internet Explorer 6 to Internet Explorer 7 or 8. Expression Web SuperPreview for Internet Explorer shows your Web pages rendered in IE 6 and either IE 7 or IE 8, depending on which version you have installed on your machine. Expression Web SuperPreview for Internet Explorer not only shows a high-fidelity rendering of how pages will look on different browsers, but it also identifies the element's tag, size and position, applied styles, and location in the DOM (Document Object Model) tree so you can quickly fix the error.
FireBug lets you explore the far corners of the DOM by keyboard or mouse. All of the tools you need to poke, prod, and monitor your JavaScript, CSS, HTML, HTML 5 and are brought together into one seamless experience, including a debugger, error console, command line, and a variety of fun inspectors.
A Computer Portal. Site Map
Site Map in XML of this site. Using ROR (Resources Of a Resource) is a rapidly growing XML format for describing any object on a website (sitemaps, products, services, menus, images, reviews, contact info, business info, etc), so any search engines can better understand its content. ROR Sitemap Generator ROR Submission More information about Site Maps and Google Site Maps
Web Standards Project is a grassroots coalition fighting for standards which ensure simple, affordable access to web technologies for all. Include the ACID 2 test.
User Agent String Discover your user agent details.
More Search engines. Online Dictionary, Thesaurus. Acronym or abbreviation finder, etc..
More Programming Languages and Computer Code and Scripting
More Operating Systems and Graphical User Interfaces. Windows Visa/XP, Linux, Apple, BeOS, etc.
Design Festival Provides daily tutorials and inspiration for designers. In these pages, web design professionals from around the world share their tips, advice, and expertise. Access best-practice UX design, logo design, typography, and coding advice.. Indulge your passion for design—and learn a thing or two as you go. Contribute your own expertise to help others sharpen their skills.
15 sites web developers and designers should knowMicrosoft Ad Centre Labs, contains a host of analytics offerings that search advertisers can use to better strategize about keyword buys. For instance, one tool available at launch is "search funnels"--described on the site as a method to visualize and analyze search behaviors. Ad Canter Lab, Some useful Tools for Keywords and search results, etc...
Microsoft Expression® Web Designer. Community Technology Preview, (CTP) of Expression Web Designer. Expression Web Designer is a professional design tool to help you create modern standards-based Web sites. Expression Web Designer helps you create and work with :-The Microsoft Internet Explorer Weblog
TrafficSeeker Packed with TONS of new features to get your site better rankings in the search engines. The Pro version submits your site to over 200,000 engines and the Platinum to over 1 Million engines including Google, Yahoo, HotBot, Dmoz and many more! PLUS lot's of other places >>>> Program details of how to Automatically achieve this while you sleep...
About the Digital Millennium Copyright Act (MSN). The Digital Millennium Copyright Act of 1998 (DMCA), (MSN), limits the use of copyright-protected content on the Internet. Users and site owners should be aware of the following provisions that govern MSN Search:
Yahoo's policy in appropriate circumstances and at its discretion, to disable and/or terminate the accounts of users who may infringe or repeatedly infringe the copyrights or other intellectual property rights of Yahoo! and/or others.
Introducing the Yahoo! Site Explorer APIs. Gain a unique perspective on your online presence with Site Explorer APIs. Yahoo! Site Explorer APIs provide access to information about your site from the Yahoo! Site Explorer service. These APIs help you better understand your traffic and usage -- querying for the pages in the Yahoo! index and the sites linking into a site. They will be useful to anyone looking for a good grasp of who is linking to you and to create an effective alternative to easily-spammed trackbacks.
Free Web Application Toolkits These free Web app toolkits help you complete common Web development tasks and quickly add new features to your apps. Whether it's Bing Maps integration or adding social capabilities to your site, there's a toolkit for you.
SDL Regex Fuzzer, as a free download. SDL Regex Fuzzer will evaluate regular expression patterns to determine whether they could be vulnerable to ReDoS, regular expression denial of service. It usually takes only a few seconds of testing to make a determination. Help you protect against denial of service (DoS) attacks. More regular expression links
Copyscape Search for copies of your page on the Web
Similar Page Checker from SEO Tools
40 Online Generators for Web Designers Should Bookmark
Plagium. Track plagiarism. returns links to documents containing text blocks that match what you have presented to Plagium
The Stanford Copyright & Fair Use Centre (US law)
US Copyright Office (US law)
MyFreeCopyright. Provides a third-party non-repudiation, registered dating of your original digital creation. By using this service, you publicly associate your digital copyright and defined rights to you.
| Web Mon. Website Monitor. YouTube Video | ||
|
WebMon is a freeware web page update monitoring program - it saves you time and keeps you updated by automatically checking web pages to see if they have changed. WebMon: Know when web pages change. WebMon is a freeware web page update monitoring program - it saves you time and keeps you updated by automatically checking web pages to see if they have changed. Some of its features include: Checking an unlimited number of web pages. Scheduling automatic checking at set intervals. Optional pop-up alerts and sounds when updates are found. Running other programs when updates are found. Selecting which part of the web page to check. Update logging. Proxy support, with authentication. Unintrusive tray icon when minimised. Importing IE favorites and Netscape bookmarks. Help system - simply press F1 at any time. Simple installation and removal. Freeware, with no advertising or spyware. Saves you time, keeps you updated. Helps safeguard against hacking. |
Making money from the internet
SpyFu Did you ever wonder who pays more for ads online MySpace or Classmates.com? Turns out, it is Classmates by a landslide, but what about your competitors? You, your competitors and nearly 4.5 million other domains are among those constantly monitored by SpyFu, a new site launched today by Velocityscape. SpyFu is the long-anticipated sequel to Googspy, the free competitive research tool that became an instant destination for internet marketers when it was launched last year. The new site, currently in beta, is loaded with new features and packed with over twenty times more data. During the beta, even the subscriber-only features like downloadable Excel reports and statistics down to the specific web page will be free.
NicheBOT.com - Find what people search for. NicheBOT offers free keyword research services, innovative web site software, search engine ranking tools, and more.
![]() |
Axandra IBP. Internet Business Promoter. The all-in-one web site promotion tool for your web site success. IBP is the award-winning web site promotion and search engine submission software tool that helps you to get more revenue with high search engine rankings in Google, the new Yahoo and all other major search engines. IBP helps you with all important aspects of web site promotion. |
| Axandra ARELIS More customers, higher search engine rankings and new business contacts! ARELIS is a top rated software program that helps you to build a powerful business network quickly and easily. You'll benefit from highly targeted free traffic to your web site, new business contacts, a higher link popularity, higher search engine rankings and more sales. |
Test Everything Test just about every aspect of your website. (Includes Proxy)
Tutorial find Learn more about computer related items.
ScriptJar Webmaster Resources
Allexperts.com A free service that features thousands of volunteers in the areas of Computing, medicine, arts, TV, sports, music, travel, humanities, love, education, business, religion and more waiting to answer your one-on-one questions, and all for free!
Yahoo! Search Resources for Webmasters Useful links on Yahoo! for site owners and webmasters looking for information on content guidelines, search community, webmaster support and feedback, site promotion, and search marketing.
Webconfs The SEO Tool Set. Tons of tools.
68 Helpful SEO Tools and Resources
Tutorio.com, Webmaster Tutorials
Clean up your Web pages with HTML TIDY HTML links
Link Valet is a WWW Link checker and HTTP Status Codes by Site Valet
Free Meta Check! No Meta Tags or poor Meta Tags may loss your website traffic. Check your Meta Check now. Find out more about Meta Tags Click Here.
Golexa (Also ranking, whois etc. tools)
Bandwidth Tests. Internet Speed. Internet Speed Testing. Improving Internet Speeds. Find your Internet Speeds, measure internet speeds., increase your download speeds, Internet Speed Utilities.
|
The concept of "page size" is defined as the sum of the file sizes for all the elements that make up a page, including the defining HTML file as well as all embedded objects (e.g., image files with GIF and JPG pictures). It is possible to get away with page designs that have larger page sizes as long as the HTML file is small and is coded to reduce the browser's rendering time. | |||||||||||||||||
Page Loading Times. Measure your page loading speeds
Site Spider Viewer Find various SEO statistics and spider information about your site. Strips out all the decorative stuff. It'll present you with the page's title, text, word count, HTML source code and more.
CodeMonitor takes a snapshot of the code for each page you specify. Each day, CodeMonitor then goes out and looks at each page again, comparing it to the snapshot previously taken. If the two versions are different, CodeMonitor then sends you an email to notify you that a change has been made to the page. You can then login to your CodeMonitor account to view a side-by-side code view of the two pages. Differences in the code are highlighted for you.
How to verify if the connection is secured, (Basic guide only) :-
Scan your wireless network by visiting 'My Network Places'. There should be a
picture of a padlock next to the name of your network. If this is absent then
you need security. A wireless encryption key is normally used to make the
hacking more difficult. The key is a series of numbers and letters, There are
WEP with 64bit or 128bit encryption that offers limited security.WPA-TKIP offers
better security and is compatible with older routers and USB keys. WPA2-AES
offers the best security and performance but has less compatibility
UTF-8 and the Byte-Order Mark (BOM) Headers must be written before any data is sent to the client. Unicode files may include a Byte-Order Mark (BOM) to help distinguish the big endian and little endian byte order. Unfortunately, the BOM isn't understood by PHP. Upon encountering the BOM, PHP assumes that it is dealing with data, by which time it's too late to modify headers. Solution? Save the file in UTF-8 encoding without a BOM.
upPanel.com is a free website monitoring service that watches your websites and alert you if one becomes unavailable. 24 x 7 x 365 monitoring. Automatic alert when your site becomes unresponsive. Email alerting. MSN, ICQ, AIM alerting (under development) Detailed alert message. Notice when site is back online. Remote locations new !!Monitoring: Our advanced monitoring system can check multiple protocols such as: HTTP (80), HTTPS (443), FTP (21), SSH (22), POP (110), SMTP (25). Ping more to come..
Pinned Sites Developer Documentation. Learn how, as a developer, you can implement the Pinned Sites feature of Windows Internet Explorer 9 to integrate your website with the Windows 7 desktop. These scenarios walk you through the process of adding site metadata, custom Jump Lists, notification icons, and Thumbnail Preview toolbar controls to the websites you develop.
Site Pinning: Rotating Overlay Icons for Multiple Service Notifications12 Tools To Check Your site's Accessibility
Microsoft Office Live is the perfect way to get started on the Web. It features all the basics you need to create your first Web site, including free hosting, Web site statistics, personalized domain name, and e-mail addresses.
Free SEO Tools seocompany.ca
Free SEO Tools Seopen
Free SEO Tools We build pages
SEO Egghead SEO Blog
Widexl is developing top quality internet cgi scripts written in Perl for webmasters and are industry specialists in development of search engine related and password protecting programs.
Caching Tutorial. For Web Authors and Webmasters. A Web cache sits between one or more Web servers (also known as origin servers) and a client or many clients, and watches requests come by, saving copies of the responses' like HTML pages, images and files (collectively known as representations' for itself. Then, if there is another request for the same URL, it can use the response that it has, instead of asking the origin server for it again. This should speed up web browsing because files and images may be received form the local cache memory instead of having to re-request from the internet server again, this will also save bandwidth, (data flow), use. Covers Pragma HTTP Headers etc...
| Effective RIA: Tips and Tricks for Building Effective Rich Internet Applications (Silverlight required to view) |
Effective RIA: Tips and Tricks for Building Effective Rich Internet
Applications RIA Services. Maintainability, testability, performance, and security can be improved by understanding the components and tools and following some basic guidelines. This session uses Windows Communication Foundation RIA Services and Microsoft Silverlight as the key tools and covers the separation of concerns between data access, logic and presentation tiers, best practices for testability and tricks for getting better performance through design. We also cover best practices for locking down your application. Web Services UDDI, WSDL, SOAP |
|
Web Development & Design Tutorials
Each month, we bring together a selection of the best tutorials and articles from across the whole Tuts+ network. Whether you’d like to read the top posts from your favourite site, or would like to start learning something completely new, this is the best place to start!
Making modifications to your car or truck in Photoshop can be a lot of fun. In this tutorial we will demonstrate how to create a pimped out truck modification using photos taken with a simple point and shoot camera, with no advanced lighting setup. Let’s get started!
Photoshop is great at seamlessly combing photos to create an entirely new scene. In this tutorial we will create an elephant sundae using several stock photos. Let’s get started!
In this article we will be featuring the work of Michael Oswald. Oswald is a digital artist with a unique style. His technique involves a combination of photo manipulation and digital painting techniques and the results are often stunning. Let’s take a look!
Sublime Text 2 is one of the fastest and most incredible code editors to be released in a long time! With a community and plugin ecosystem as passionate as this one, it just might be impossible for any other editor to catch up. I’ll show you my favorite tips and tricks today.
In this tutorial, youll learn how HTML5 helps to provide you with several ways of presenting your media content to users. As a result, youll increase the availability of your media to users with different
needs and requirements, making it more accessible.
Sooner or later, all developers are required to interact with an API. The most difficult part is always related to reliably testing the code we write, and, as we want to make sure that everything works properly, we continuosly run code that queries the API itself. This process is slow and inefficient, as we can experience network issues and data inconsistencies (the API results may change). Let’s review how we can avoid all of this effort with Ruby.
The microscopes is a symbol of our civilization. Throughout this tutorial on how to illustrate a vector microscope you’ll take advantage of numerous Illustrator tools. You will learn how to use blends, art brushes and 3D rendering in Adobe Illustrator. Let’s get started!
This work is a common project created together with Iaroslav Lazunov and Alexander Egupov. We have used 3D rendering, Blends, Opacity masks, making this three-dimensional stage with vanishing points. Learn every step in how to create this picture gallery work.
If you’re serious about creating a typeface design, then you’ll need some solid resources to get started. Learn effective typeface design workflows, how to take an initial spark of an idea from sketch, through Illustrator, into Fontlab, and then work your creation into a complete and custom font design. Here are multiple tutorials that show you how to create fonts in Illustrator and Fontlab, and you can also dive into articles that describe the foundation of quality type design with ample inspirational examples.
Pairing fonts can be a challenge. Selecting two or more fonts which work well is one thing – selecting two which work together to achieve your typographic aims may have you reaching for the aspirin. Let’s see if we can alleviate any headaches. This guide will help you get started with font pairing for the web.
With the continuous growth of the Internet, online marketing has gotten bigger every year, and along with it, the advertising industry. One major factor in all this craziness is buying and selling ads.
Twitter’s Bootstrap is an excellent set of carefully crafted user interface elements, layouts, and javascript tools, freely available to use in your next web design project. This video series aims to introduce you to Bootstrap; taking you all the way from downloading the resources, to building a complete Bootstrap-based website.
There are few techniques in the photography world that divide our community as much as HDR. High dynamic range images, or HDR images, are a special type of composite image that combines several images at different exposure settings in order to create an image with increased dynamic range. The look provided by HDR is loved by many, and disliked by perhaps just as many. In today’s article, we’re going to take a better look at what HDR is, and get some opinions from photographers using HDR.
Cars and motorbikes have been around for 100 years. Throughout the century, they have looked beautiful, satisfied our need for speed and become a symbol for thrill seeking. Today, we’ll look at photos ranging from brand new Ferrari’s to classic muscle cars.
While a number of smartphones now offer photo editing basics (and a plethora of apps to expand things even more), the portability of a solid photo editing program has been hard to come by. Photoshop is a monster in regards to space requirements and its ability to work on any system where it is not expressively installed. Picasa can be fairly ‘lightweight’ but lacks many of the more advanced photo editing tools. So what about GIMP?
In the first tutorial of 2012 you’ll learn how to create an awesome low-poly dinosaur using Blender and Gimp. In today’s post artist Karan Shah will walk you through the entire modeling process step by step, and show you how to create an optimized model suitable for use in any game engine.
Today you’ll learn to animate and shade fluids, understand all of the major attributes, learn how adding fields will allow you to gain better control over your simulation, and how to light and render the final animation.
Due to the shear number of polygons often required to make believable 3D trees, creating realistic ones for use “in-game” can be a challenging, time consuming task. SpeedTree from IDV aims to change all that with it’s intuitive UI, ease of use and powerful toolset. Making believable trees and plants has literally never been easier!
In this tutorial we’re going to go over the principle functionality of CameraTracker from The Foundry, learning basic workflow, optimizing results, aligning the ground plane and exporting this data from After Effects to Cinema 4d.
Using just a few video elements of torch flames, we composite a burning hand by using a series of null objects and expressions to drive a time lagged displacement effect to simulate fire burning from a moving source. We use the Puppet tool for the distortion and throw on some tracked lighting effects and a displacement map for the Heat. This principle can be used to add realistic, fluid motion to any tracked object.
Youve watched thousands of tutorials. Youve put in countless hours and spent many late nights working on personal projects. Youve finally come to the conclusion that this may just be something you would like to do for a career. It can seem a little intimidating at first, because how are you going to convince someone to pay you to do this? Up until now youve been your only client. How do you get more? Im going to share my insight and experiences on how to successfully launch your freelance career this year!
Lets face it, software is expensive. While there are hundreds of free plug-ins available online, more often than not two problems will arise: One, most of them are for PCs leaving us Mac users feeling left out. Two, most of them are vary poor quality.
While I do agree with the saying, “The tools are only as good as the artist,” I also believe the opposite is true; that at some point the artist can only be as good as his tools are.
This short series of quick tips is designed to give you a good overview of the audio processing techniques involved in creating a professional sounding drum beat for use in house, electro and breaks in Cubase. In this final part we will look at a few ways to add even more life to your drums.
Here is a sample of the type of beat you could expect to end up with at the end of this series of tips:
It’s 3:30 in the afternoon when your phone rings. The head of a music library is calling and she needs your help. They have a commercial for an A-list client that needs music, and they want you to submit an entry. You’ll get $10,000 if you land the gig.
In this mini-series, we’re creating a spaceship game where the main control is via the microphone: shout louder to make the ship fly higher. So far, we’ve created all the required graphical elements for the game. Now, it’s time to work on our code. We’ve got a lot to do, so let’s get started!
If you, like many Flash developers, are looking into using HTML5 for your web apps, you’ll almost certainly have come across jQuery. It’s a very popular JavaScript library, used by a large percentage of the most visited websites – but what’s all the fuss about, and should you use it?
As HTML games begin to gradually increase in popularity, vendors are starting to introduce some exciting new APIs to make gaming that little bit sweeter for both us developers and our end players. One of these is the GamepadAPI, which allows you to connect your good old console gamepad into your computer and use it for browser based games, plug and play style. Let’s dive in!
2011 was a big year for the advancement of HTML5 in the web development community. It became pretty widely adopted, especially for the mobile web. There have been major projects that help developers use HTML5, like Paul Irish’s HTML5 Boilerplate (technically 2010, but popularized in 2011) and books galore!
In Part 1 and Part 2 of our custom meta box template tutorial series, we learned how to create a field array to loop through and create a custom meta box with your standard fields. Now let’s throw in a bit of JavaScript for some fancy, but highly useful fields.
Give your site a boost! Implement crucial optimization techniques that will improve not only your ySlow score, but your Google rank too. In this tutorial we will cover all aspects of W3 caching, ySlow, Google page speed, CSS sprites & htaccess rules, to achieve a high ySlow score like i have done on my blog.
Engage your users with stunning carousels. We’ll look at how easy and clean it can be to implement scrollable, interactive carousels in your iOS applications. With high configurability, you can have 3D, flat, rotating, and endless scrolling arrays for data, images, or buttons.
Want to learn how to use PhoneGap, but don’t know where to get started? Join us as we put together “Sculder”, not only a tribute to an excellent science fiction TV series, but a fully-fledged native mobile application for the believer in you!
In light of recent announcements from Adobe, there has been a lot of confusion over the state of the Flash Platform – specifically in regard to Flash content on mobile devices. This article seeks to clarify many of the misconceptions that exist by addressing the main points of confusion around these announcements regardless of the initial, monumental, and absolutely unbelievable blunders from failed public (and private) relations messaging and general marketing surrounding these announcements.
Sometimes, it’s easy to become overwhelmed by how much there is to learn in this industry. If jQuery happens to be on your personal “need to learn soon” list, then I’m happy to announce my new course: “Learn jQuery in 30 Days”. If you’ll give me fifteen minutes a day for the next month, I’ll help you become a jQuery pro – and it’s free!
Sporadically, your skills will be put to the test, when you take the interactive quizzes!
Once you enroll (free) via email, each day, you’ll receive a 10-15 minute video lesson. As you might expect, every episode will build upon the one it proceeds, and, sporadically, your skills will be put to the test, when you take the interactive quizzes!
Along the way, you’ll learn the essentials (querying and manipulating the DOM), while incrementally working your way up to more advanced topics, such as jQuery’s AJAX methods and plugin development.
I worked particularly hard to make the process of picking up this new skill as easy as possible for everyone – even if you have very, very little JavaScript experience. So…do you want to join me?
Web development is an industry that’s in a state of constant flux with technologies and jargon changing and mutating in an endless cycle. Not to mention the sheer deluge of information one has to process everyday.
In this series, published monthly, we’ll seek to rectify this by bringing you all the important news, announcements, releases and interesting discussions within the web development industry in a concise package. Join me after the jump for an extra dose of community content this month!
All of the important news in a single place: releases, announcements, companies bickering, security issues and all related hoopla.

HTML5 is a beast of a spec with no one truly knowing everything there is to know. This shiny new site gives you all the information you need to use HTML5 features on your site, right now.
The site provides you with recommendations as to whether you should be using that specific facet of HTML5 right now and provides you with helpful links to polyfills, when necessary. Time saver!

Enyo is the engine that powers webOS. But what exactly is Enyo, you ask? Well, it’s a spiffy JavaScript framework that helps you build better performing, easier to maintain application.
I’m sure you’ve heard this plenty of times before so why don’t you check out the link below to find out for yourself?

Last month saw a figurative deluge of protests against SOPA. If you have no idea what SOPA is, hit the link below to find out.
While many services merely blackened out their logo, many others, including Wikipedia and Reddit, went the extra length and completely blacked out their sites. The proposed bill has been shelved but I predict that we’ll see another in a different skin soon…

I understand not everyone uses a tablet but the number is growing, quite rapidly. Wouldn’t it be great to SSH into your server to fix that pesky bug? Get a proper laptop, you say? I’m going to ask you to shush for now and go with the flow.
This month saw the release of Vim for the iOS platform. And no, it’s not a gimped version. From a quick run through, it seems that all the nice bits are still in there. If you’re in the intersection between developers and iPad users, let us know in the comments below as to whether it fits your needs.

I’m sure a lot of you have played this ridiculously cute ‘aww’ inducing game. What brings the game to our list is the fact that it has been ported to the browser by the newly cool Internet Explorer team.
And true to their current vision, they’ve ported it using JavaScript and the magic of HTML5. The link below leads you to a write up about the game development instead of the game itself to protect your productivity.

‘The’ Rails tutorial? Indeed it is! Michael Hartl’s free has helped many learn the voodoo that is Rails and Michael is slowly updating his ebook for Ruby 1.9 and Rails 3.2
Thus far, six chapters are out with a chapter expected every week in the future. Make sure to check the site out!

Sublime Text 2 is a grand piece of work and every build only reaffirms this. This new build introduces a ton of features including auto complete, performance improvements, a new UI theme and a ton more.
As web developers, the sheer amount of resources we can tap into increases exponentially with time. Here is just a quick look at some recently created resources that deserve your attention — everything from new books to scripts and frameworks.
My wrap.js plugin handles the nested require based on a config, and takes it to the next level by generating an actual AMD module for you during the build. So now you don’t have to write wrappers around scripts that you wish were modules, wrap.js does that for you.
Resumables is a JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API.
The library is designed to introduce fault-tolerance into the upload of large files through HTTP. This is done by splitting each files into small chunks; whenever the upload of a chunk fails, uploading is retried until the procedure completes.
IcedCoffeeScript is a fork of CoffeeScript. It is superset of the CoffeeScript language. The iced interpreter is a drop-in replacement for the standard coffee interpreter since it will interpret all existing CoffeeScript programs. IcedCoffeeScript (ICS) adds two new keywords: await and defer. These additions simply and powerfully streamline asynchronous control flow, both on the server and on the browser.
Banking.JS retrieves all of your bank transactions similiar to how quickbooks does it. There is no need to depend on or pay for third party services. The bank statement results are in JSON or Valid XML and supports all financial institutions.
Roy is a small functional language that compiles to JavaScript. The main features include whitespace significant syntax, compile-time meta-programming, structural typing and monad syntax
jsgif an animated GIF player bookmarklet with support for pausing, going frame-by-frame, playing in reverse, and other features that one might expect from a video player.
zip.js offers a low-level API for writing and reading large zip files (up to 4GB) with a stable RAM use. It also offers a Filesystem API in order to manipulate zip file structure.
Seriously.js is a real-time, node-based video compositor for the web. Inspired by professional software such as After Effects and Nuke, Seriously.js renders high-quality video effects, but allows them to be dynamic and interactive.
Often, you’re not really looking for a tutorial as much as you’re looking for a rant, an opinion or the musings of a tired developer or just something cool with absolutely zero real world use. This sections contains links to precisely those — interesting and cool stuff from the developer community.

Five common options for hosting a web business, ranked in decreasing order of ‘cloudiness’.

Yehuda Katz talks about why he wants to see block lambdas in JavaScript. It’s a bit technical but well worth a read.

A Non-Developer explains how… I think you know already. Just click the darn link and move on.

Is it the developer’s fault? Is it a management issue? Bad methodology, or lack thereof? Or is it ingrained in the nature of the process?

This StackOverflow question, along with the well written answers below, explore the code that was demonstrated in the talk mentioned in the title. Provides a quick look at the quirkier portions of JavaScript.

A quick little read that explains why, and how, different databases perform differently. There isn’t much jargon there and gets the point quite clearly.

The link below points to some PHP code. Figure out what the output is and you get a cookie!

A clean writeup that details how the author got all the named technologies working together.

Ever had to think about the question above? How exactly do they each handle semicolons and newlines? Read up below.

The Least Boring Programming Book teaches Ruby programming to beginners in an unconventional way.

I don’t really have much context to go on here so just give the link below a click. Pretty smooth stuff for something that’s not canvas or Flash based.
Well, that’s about all the major changes that happened in our industry lately.
Do you want us to cover more standard news? A focus on upcoming scripts maybe? Or just more interesting posts and discussions from the community? Let us know in the comments and thank you so much for reading!
Sooner or later, all developers are required to interact with an API. The most difficult part is always related to reliably testing the code we write, and, as we want to make sure that everything works properly, we continuosly run code that queries the API itself. This process is slow and inefficient, as we can experience network issues and data inconsistencies (the API results may change). Let’s review how we can avoid all of this effort with Ruby.
“Flow is essential: write the tests, run them and see them fail, then write the minimal implementation code to make them pass. Once they all do, refactor if needed.”
Our goal is simple: write a small wrapper around the Dribbble API to retrieve information about a user (called ‘player’ in the Dribbble world).
As we will be using Ruby, we will also follow a TDD approach: if you’re not familiar with this technique, Nettuts+ has a good primer on RSpec you can read. In a nutshell, we will write tests before writing our code implementation, making it easier to spot bugs and to achieve a high code quality. Flow is essential: write the tests, run them and see them fail, then write the minimal implementation code to make them pass. Once they all do, refactor if needed.
The Dribbble API is fairly straightforward. At the time of this it supports only GET requests and doesn’t require authentication: an ideal candidate for our tutorial. Moreover, it offers a 60 calls per minute limit, a restriction that perfectly shows why working with APIs require a smart approach.
This tutorial needs to assume that you have some familiarity with testing concepts: fixtures, mocks, expectations. Testing is an important topic (especially in the Ruby community) and even if you are not a Rubyist, I’d encourage you to dig deeper into the matter and to search for equivalent tools for your everyday language. You may want to read “The RSpec book” by David Chelimsky et al., an excellent primer on Behavior Driven Development.
To summarize here, here are three key concepts you must know:
“As a general practice, run tests every time you update them.”
WebMock is a Ruby mocking library that is used to mock (or stub) http requests. In other words, it allows you to simulate any HTTP request without actually making one. The primary advantage to this is being able to develop and test against any HTTP service without needing the service itself and without incurring in related issues (like API limits, IP restrictions and such).
VCR is a complementary tool that records any real http request and creates a fixture, a file that contains all the needed data to replicate that request without performing it again. We will configure it to use WebMock to do that. In other words, our tests will interact with the real Dribbble API just once: after that, WebMock will stub all the requests thanks to the data recorded by VCR. We will have a perfect replica of the Dribbble API responses recorded locally. In addition, WebMock will let us test edge cases (like the request timing out) easily and consistently. A wonderful consequence of our setup is that everything will be extremely fast.
As for unit testing, we will be using Minitest. It’s a fast and simple unit testing library that also supports expectations in the RSpec fashion. It offers a smaller feature set, but I find that this actually encourages and pushes you to separate your logic into small, testable methods. Minitest is part of Ruby 1.9, so if you’re using it (I hope so) you don’t need to install it. On Ruby 1.8, it’s only a matter of gem install minitest.
I will be using Ruby 1.9.3: if you don’t, you will probably encounter some issues related to require_relative, but I’ve included fallback code in a comment right below it. As a general practice, you should run tests every time you update them, even if I won’t be mentioning this step explicitly throughout the tutorial.
We will use the conventional /lib and /spec folder structure to organize our code. As for the name of our library, we’ll call it Dish, following the Dribbble convention of using basketball related terms.
The Gemfile will contain all our dependencies, albeit they’re quite small.
source :rubygems gem 'httparty' group :test do gem 'webmock' gem 'vcr' gem 'turn' gem 'rake' end
Httparty is an easy to use gem to handle HTTP requests; it will be the core of our library. In the test group, we will also add Turn to change the output of our tests to be more descriptive and to support color.
The /lib and /spec folders have a symmetrical structure: for every file contained in the /lib/dish folder, there should be a file inside /spec/dish with the same name and the ‘_spec’ suffix.
Let’s start by creating a /lib/dish.rb file and add the following code:
require "httparty" Dir[File.dirname(__FILE__) + '/dish/*.rb'].each do |file| require file end
It doesn’t do much: it requires ‘httparty’ and then iterates over every .rb file inside /lib/dish to require it. With this file in place, we will be able to add any functionality inside separate files in /lib/dish and have it automatically loaded just by requiring this single file.
Let’s move to the /spec folder. Here’s the content of the spec_helper.rb file.
#we need the actual library file
require_relative '../lib/dish'
# For Ruby < 1.9.3, use this instead of require_relative
# require(File.expand_path('../../lib/dish', __FILE__))
#dependencies
require 'minitest/autorun'
require 'webmock/minitest'
require 'vcr'
require 'turn'
Turn.config do |c|
# :outline - turn's original case/test outline mode [default]
c.format = :outline
# turn on invoke/execute tracing, enable full backtrace
c.trace = true
# use humanized test names (works only with :outline format)
c.natural = true
end
#VCR config
VCR.config do |c|
c.cassette_library_dir = 'spec/fixtures/dish_cassettes'
c.stub_with :webmock
end
There’s quite a few things here worth noting, so let’s break it piece by piece:
require_relative statement is a Ruby 1.9.3 addition.
minitest/autorun includes all the expectations we will be using, webmock/minitest adds the needed bindings between the two libraries, while vcr and turn are pretty self-explanatory.
Last, but not least, the Rakefile that contains some support code:
require 'rake/testtask' Rake::TestTask.new do |t| t.test_files = FileList['spec/lib/dish/*_spec.rb'] t.verbose = true end task :default => test
The rake/testtask library includes a TestTask class that is useful to set the location of our test files. From now on, to run our specs, we will only type rake from the library root directory.
As a way to test our configuration, let’s add the following code to /lib/dish/player.rb:
module Dish class Player end end
Then /spec/lib/dish/player_spec.rb:
require_relative '../../spec_helper'
# For Ruby < 1.9.3, use this instead of require_relative
# require (File.expand_path('./../../../spec_helper', __FILE__))
describe Dish::Player do
it "must work" do
"Yay!".must_be_instance_of String
end
end
Running rake should give you one test passing and no errors. This test is by no means useful for our project, yet it implicitly verifies that our library file structure is in place (the describe block would throw an error if the Dish::Player module was not loaded).
To work properly, Dish requires the Httparty modules and the correct base_uri, i.e. the base url of the Dribbble API. Let’s write the relevant tests for these requirements in player_spec.rb:
...
describe Dish::Player do
describe "default attributes" do
it "must include httparty methods" do
Dish::Player.must_include HTTParty
end
it "must have the base url set to the Dribble API endpoint" do
Dish::Player.base_uri.must_equal 'http://api.dribbble.com'
end
end
end
As you can see, Minitest expectations are self-explanatory, especially if you are an RSpec user: the biggest difference is wording, where Minitest prefers “must/wont” to “should/should_not”.
Running these tests will show one error and one failure. To have them pass, let’s add our first lines of implementation code to player.rb:
module Dish
class Player
include HTTParty
base_uri 'http://api.dribbble.com'
end
end
Running rake again should show the two specs passing. Now our Player class has access to all Httparty class methods, like get or post.
As we will be working on the Player class, we will need to have API data for a player. The Dribbble API documentation page shows that the endpoint to get data about a specific player is http://api.dribbble.com/players/:id
As in typical Rails fashion, :id is either the id or the username of a specific player. We will be using simplebits, the username of Dan Cederholm, one of the Dribbble founders.
To record the request with VCR, let’s update our player_spec.rb file by adding the following describe block to the spec, right after the first one:
...
describe "GET profile" do
before do
VCR.insert_cassette 'player', :record => :new_episodes
end
after do
VCR.eject_cassette
end
it "records the fixture" do
Dish::Player.get('/players/simplebits')
end
end
end
After running
rake, you can verify that the fixture has been created. From now on, all our tests will be completely network independent.
The before block is used to execute a specific portion of code before every expectation: we use it to add the VCR macro used to record a fixture that we will call ‘player’. This will create a player.yml file under spec/fixtures/dish_cassettes. The :record option is set to record all new requests once and replay them on every subsequent, identical request. As a proof of concept, we can add a spec whose only aim is to record a fixture for simplebits’s profile. The after directive tells VCR to remove the cassette after the tests, making sure that everything is properly isolated. The get method on the Player class is made available, thanks to the inclusion of the Httparty module.
After running rake, you can verify that the fixture has been created. From now on, all our tests will be completely network independent.

Every Dribbble user has a profile that contains a pretty extensive amount of data. Let’s think about how we would like our library to be when actually used: this is a useful way to flesh out our DSL will work. Here’s what we want to achieve:
simplebits = Dish::Player.new('simplebits')
simplebits.profile
=> #returns a hash with all the data from the API
simplebits.username
=> 'simplebits'
simplebits.id
=> 1
simplebits.shots_count
=> 157
Simple and effective: we want to instantiate a Player by using its username and then get access to its data by calling methods on the instance that map to the attributes returned by the API. We need to be consistent with the API itself.
Let’s tackle one thing at a time and write some tests related to getting the player data from the API. We can modify our "GET profile" block to have:
describe "GET profile" do
let(:player) { Dish::Player.new }
before do
VCR.insert_cassette 'player', :record => :new_episodes
end
after do
VCR.eject_cassette
end
it "must have a profile method" do
player.must_respond_to :profile
end
it "must parse the api response from JSON to Hash" do
player.profile.must_be_instance_of Hash
end
it "must perform the request and get the data" do
player.profile["username"].must_equal 'simplebits'
end
end
The let directive at the top creates a Dish::Player instance available in the expectations. Next, we want to make sure that our player has got a profile method whose value is a hash representing the data from the API. As a last step, we test a sample key (the username) to make sure that we actually perform the request.
Note that we’re not yet handling how to set the username, as this is a further step. The minimal implementation required is the following:
...
class Player
include HTTParty
base_uri 'http://api.dribbble.com'
def profile
self.class.get '/players/simplebits'
end
end
...
A very little amount of code: we’re just wrapping a get call in the profile method. We then pass the hardcoded path to retrieve simplebits’s data, data that we had already stored thanks to VCR.
All our tests should be passing.
Now that we have a working profile function, we can take care of the username. Here are the relevant specs:
describe "default instance attributes" do
let(:player) { Dish::Player.new('simplebits') }
it "must have an id attribute" do
player.must_respond_to :username
end
it "must have the right id" do
player.username.must_equal 'simplebits'
end
end
describe "GET profile" do
let(:player) { Dish::Player.new('simplebits') }
before do
VCR.insert_cassette 'base', :record => :new_episodes
end
after do
VCR.eject_cassette
end
it "must have a profile method" do
player.must_respond_to :profile
end
it "must parse the api response from JSON to Hash" do
player.profile.must_be_instance_of Hash
end
it "must get the right profile" do
player.profile["username"].must_equal "simplebits"
end
end
We’ve added a new describe block to check the username we’re going to add and simply amended the player initialization in the GET profile block to reflect the DSL we want to have. Running the specs now will reveal many errors, as our Player class doesn’t accept arguments when initialized (for now).
Implementation is very straightforward:
...
class Player
attr_accessor :username
include HTTParty
base_uri 'http://api.dribbble.com'
def initialize(username)
self.username = username
end
def profile
self.class.get "/players/#{self.username}"
end
end
...
The initialize method gets a username that gets stored inside the class thanks to the attr_accessor method added above. We then change the profile method to interpolate the username attribute.
We should get all our tests passing once again.
At a basic level, our lib is in pretty good shape. As profile is a Hash, we could stop here and already use it by passing the key of the attribute we want to get the value for. Our goal, however, is to create an easy to use DSL that has a method for each attribute.
Let’s think about what we need to achieve. Let’s assume we have a player instance and stub how it would work:
player.username => 'simplebits' player.shots_count => 157 player.foo_attribute => NoMethodError
Let’s translate this into specs and add them to the GET profile block:
...
describe "dynamic attributes" do
before do
player.profile
end
it "must return the attribute value if present in profile" do
player.id.must_equal 1
end
it "must raise method missing if attribute is not present" do
lambda { player.foo_attribute }.must_raise NoMethodError
end
end
...
We already have a spec for username, so we don’t need to add another one. Note a few things:
player.profile in a before block, otherwise it will be nil when we try to get the attribute value.foo_attribute raises an exception, we need to wrap it in a lambda and check that it raises the expected error.id equals 1, as we know that that is the expected value (this is a purely data-dependent test).Implementation-wise, we could define a series of methods to access the profile hash, yet this would create a lot of duplicated logic. Moreover, the would rely on the API result to always have the same keys.
“We will rely on
method_missingto handle this cases and ‘generate’ all those methods on the fly.”
Instead, we will rely on method_missing to handle this cases and ‘generate’ all those methods on the fly. But what does this mean? Without going into too much metaprogramming, we can simply say that every time we call a method not present on the object, Ruby raises a NoMethodError by using method_missing. By redefining this very method inside a class, we can modify its behaviour.
In our case, we will intercept the method_missing call, verify that the method name that has been called is a key in the profile hash and in case of positive result, return the hash value for that key. If not, we will call super to raise a standard NoMethodError: this is needed to make sure that our library behaves exactly the way any other library would do. In other words, we want to guarantee the least possible surprise.
Let’s add the following code to the Player class:
def method_missing(name)
if profile.has_key?(name.to_s)
profile[name.to_s]
else
super
end
end
The code does exactly what described above. If you now run the specs, you should have them all pass. I’d encorage you to add some more to the spec files for some other attribute, like shots_count.
This implementation, however, is not really idiomatic Ruby. It works, but it can be streamlined into a ternary operator, a condensed form of an if-else conditional. It can be rewritten as:
def method_missing(name, *args, &block) profile.has_key?(name.to_s) ? profile[name.to_s] : super end
It’s not just a matter of length, but also a matter of consistency and shared conventions between developers. Browsing source code of Ruby gems and libraries is a good way to get accustomed to these conventions.
As a final step, we want to make sure that our library is efficient. It should not make any more requests than needed and possibly cache data internally. Once again, let’s think about how we could use it:
player.profile => performs the request and returns a Hash player.profile => returns the same hash player.profile(true) => forces the reload of the http request and then returns the hash (with data changes if necessary)
How can we test this? We can by using WebMock to enable and disable network connections to the API endpoint. Even if we’re using VCR fixtures, WebMock can simulate a network Timeout or a different response to the server. In our case, we can test caching by getting the profile once and then disabling the network. By calling player.profile again we should see the same data, while by calling player.profile(true) we should get a Timeout::Error, as the library would try to connect to the (disabled) API endpoint.
Let’s add another block to the player_spec.rb file, right after dynamic attribute generation:
describe "caching" do
# we use Webmock to disable the network connection after
# fetching the profile
before do
player.profile
stub_request(:any, /api.dribbble.com/).to_timeout
end
it "must cache the profile" do
player.profile.must_be_instance_of Hash
end
it "must refresh the profile if forced" do
lambda { player.profile(true) }.must_raise Timeout::Error
end
end
The stub_request method intercepts all calls to the API endpoint and simulates a timeout, raising the expected Timeout::Error. As we did before, we test the presence of this error in a lambda.
Implementation can be tricky, so we’ll split it into two steps. Firstly, let’s move the actual http request to a private method:
...
def profile
get_profile
end
...
private
def get_profile
self.class.get("/players/#{self.username}")
end
...
This will not get our specs passing, as we’re not caching the result of get_profile. To do that, let’s change the profile method:
... def profile @profile ||= get_profile end ...
We will store the result hash into an instance variable. Also note the ||= operator, whose presence makes sure that get_profile is run only if @profile returns a falsy value (like nil).
Next we can add the forced reload directive:
... def profile(force = false) force ? @profile = get_profile : @profile ||= get_profile end ...
We’re using a ternary again: if force is false, we perform get_profile and cache it, if not, we use the logic written in the previous version of this method (i.e. performing the request only if we don’t have already an hash).
Our specs should be green now and this is also the end of our tutorial.
Our purpose in this tutorial was writing a small and efficient library to interact with the Dribbble API; we’ve laid the foundation for this to happen. Most of the logic we’ve written can be abstracted and requesed to access all the other endpoints. Minitest, WebMock and VCR have proven to be valuable tools to help us shape our code.
We do, however, need to be aware of a small caveat: VCR can become a double-edged sword, as our tests can become too much data-dependent. If, for any reason, the API we’re building against changes without any visible sign (like a version number), we may risk having our tests perfectly working with a dataset, which is no longer relevant. In that case, removing and recreating the fixture is the best way to make sure that our code still works as expected.
One of the nicer things about developing on the Ruby platform is the sheer amount of meticulously categorized, highly reusable code wrapped up in the form of aptly named ‘gems’.
I’m sure you’ve heard of popular frameworks like Sinatra or the super popular Rails that ship as gems but you’re missing an entire spectrum of others that handle issues at a much lower level. Start using these and watch your productivity shoot through the roof!
I’m well aware that some of the gems listed here have Rails, or parts of Rails, as a dependency. That doesn’t mean that they are any less useful or need to be sneered at.
Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends. It works well with Rack based web applications, such as Ruby on Rails.
Related reading
Kaminari is a Scope & Engine based, clean, powerful, customizable and sophisticated paginator. Kaminari supports multiple ORMs (ActiveRecord, Mongoid, MongoMapper) multiple web frameworks (Rails, Sinatra), and multiple template engines (ERB, Haml).
Related reading
Haml (HTML Abstraction Markup Language) is a layer on top of XHTML or XML that’s designed to express the structure of XHTML or XML documents in a non-repetitive, elegant, easy way, using indentation rather than closing tags and allowing Ruby to be embedded with ease. It was originally envisioned as a plugin for Ruby on Rails, but it can function as a stand-alone templating engine.
Related reading
A simple, unobtrusive model based Ruby authentication solution. Authlogic is very flexible, it has a strong public API and a plethora of hooks to allow you to modify behavior and extend it.
Related reading
Shoulda is a gem that allows you to create more understandable tests for your Ruby application. Shoulda allows you to provide context to your tests enabling you to categorize tests according to a specific feature or scenario you’re testing.
Related reading
factory_girl provides a framework and DSL for defining and using factories – less error-prone, more explicit, and all-around easier to work with than fixtures. It has straightforward definition syntax, support for multiple build strategies (saved instances, unsaved instances, attribute hashes, and stubbed objects), and support for multiple factories for the same class (user, admin_user, and so on), including factory inheritance.
Related reading
RMagick is an interface between the Ruby programming language and the ImageMagick and GraphicsMagick image processing libraries.
Related reading
CanCan is an authorization library for Ruby on Rails which restricts what resources a given user is allowed to access and is decoupled from user roles. All permissions are stored in a single location and not duplicated across controllers, views, and database queries.
Related reading
Nokogiri is an HTML, XML, SAX, and Reader parser. Among Nokogiri’s many features is the ability to search documents via XPath or CSS3 selectors. Nokogiri parses and searches XML/HTML very quickly, and also has correctly implemented CSS3 selector support as well as XPath support.
Related reading
Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins, selector inheritance, and more. It’s translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.
Related reading
Formtastic is a Rails FormBuilder DSL (with some other goodies) to make it far easier to create beautiful, semantically rich, syntactically awesome, readily stylable and wonderfully accessible HTML forms in your Rails applications.
Related reading
Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH. It uses a simple DSL (borrowed in part from Rake) that allows you to define tasks, which may be applied to machines in certain roles. It also supports tunneling connections via some gateway machine to allow operations to be performed behind VPN’s and firewalls.
Related reading
OmniAuth is a Ruby authentication framework that provides a standardized interface to many different authentication providers such as Facebook, OpenID, and even traditional username and password.
Related reading
Bundler is a tool that manages gem dependencies for your ruby application. It takes a gem manifest file and is able to fetch, download, and install the gems and all child dependencies specified in this manifest. It can manage any update to the gem manifest file and update the bundle’s gems accordingly. It also lets you run any ruby code in context of the bundle’s gem environment.
Related reading
Resque (pronounced like “rescue”) is a Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later. Resque is heavily inspired by DelayedJob.
Related reading
Jammit is an industrial strength asset packaging library for Rails, providing both the CSS and JavaScript concatenation and compression that you’d expect, as well as YUI Compressor and Closure Compiler compatibility, ahead-of-time gzipping, built-in JavaScript template support, and optional Data-URI / MHTML image embedding.
Related reading
Capybara helps you test Rails and Rack applications by simulating how a real user would interact with your app. It is agnostic about the driver running your tests and comes with Rack::Test and Selenium support built in.
Related reading
Active Merchant is an extraction from the e-commerce system Shopify. Shopify’s requirements for a simple and unified API to access dozens of different payment gateways with very different internal APIs was the chief principle in designing the library. It was developed for usage in Ruby on Rails web applications and integrates seamlessly as a plugin but it also works excellently as a stand alone library.
Related reading
EventMachine implements a fast, single-threaded engine for arbitrary networkcommunications. It’s extremely easy to use in Ruby. EventMachine wraps all interactions with IP sockets, allowing programs to concentrate on the implementation of network protocols. It can be used to create both network servers and clients.
Related reading
Inspired by ctemplate, Mustache is a framework-agnostic way to renderlogic-free views.As ctemplates says, “It emphasizes separating logic from presentation:it is impossible to embed application logic in this templatelanguage.
Related reading
Phusion Passenger™ — a.k.a. mod_rails or mod_rack — makes deployment of Ruby web applications, such as those built on the revolutionary Ruby on Rails web framework, a breeze.
Related reading
Chef is a system integration framework designed to bring the benefits of configuration management to your entire infrastructure. With Chef, you can manage your servers by writing code, not by running commands.
Related reading
A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
Related reading
So those were some of the awesome gems I’ve found extremely useful when I’m whipping up a web app in Ruby. I’m a 100% sure I’m missing a metric butt load of others though. Let me know about your favorite gems in the comments below and thank you so much for reading!
Many PHP programmers learned how to access databases by using either the MySQL or MySQLi extensions. As of PHP 5.1, there’s a better way. PHP Data Objects (PDO) provide methods for prepared statements and working with objects that will make you far more productive!
May of 2010
“PDO – PHP Data Objects – is a database access layer providing a uniform method of access to multiple databases.”
It doesn’t account for database-specific syntax, but can allow for the process of switching databases and platforms to be fairly painless, simply by switching the connection string in many instances.

This tutorial isn’t meant to be a complete how-to on SQL. It’s written primarily for people currently using the mysql or mysqli extension to help them make the jump to the more portable and powerful PDO.
The extension can support any database that a PDO driver has been written for. At the time of this writing, the following database drivers are available:
All of these drivers are not necessarily available on your system; here’s a quick way to find out which drivers you have:
print_r(PDO::getAvailableDrivers());
Different databases may have slightly different connection methods. Below, the method to connect to some of the most popular databases are shown. You’ll notice that the first three are identical, other then the database type – and then SQLite has its own syntax.

try {
# MS SQL Server and Sybase with PDO_DBLIB
$DBH = new PDO("mssql:host=$host;dbname=$dbname, $user, $pass");
$DBH = new PDO("sybase:host=$host;dbname=$dbname, $user, $pass");
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
# SQLite Database
$DBH = new PDO("sqlite:my/database/path/database.db");
}
catch(PDOException $e) {
echo $e->getMessage();
}
Please take note of the try/catch block – you should always wrap your PDO operations in a try/catch, and use the exception mechanism – more on this shortly. Typically you’re only going to make a single connection – there are several listed to show you the syntax. $DBH stands for ‘database handle’ and will be used throughout this tutorial.
You can close any connection by setting the handle to null.
# close the connection $DBH = null;
You can get more information on database specific options and/or connection strings for other databases from PHP.net.
PDO can use exceptions to handle errors, which means anything you do with PDO should be wrapped in a try/catch block. You can force PDO into one of three error modes by setting the error mode attribute on your newly created database handle. Here’s the syntax:
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT ); $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
No matter what error mode you set, an error connecting will always produce an exception, and creating a connection should always be contained in a try/catch block.
This is the default error mode. If you leave it in this mode, you’ll have to check for errors in the way you’re probably used to if you used the mysql or mysqli extensions. The other two methods are more ideal for DRY programming.
This mode will issue a standard PHP warning, and allow the program to continue execution. It’s useful for debugging.
This is the mode you should want in most situations. It fires an exception, allowing you to handle errors gracefully and hide data that might help someone exploit your system. Here’s an example of taking advantage of exceptions:
# connect to the database
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
# UH-OH! Typed DELECT instead of SELECT!
$DBH->prepare('DELECT name FROM people');
}
catch(PDOException $e) {
echo "I'm sorry, Dave. I'm afraid I can't do that.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
There’s an intentional error in the select statement; this will cause an exception. The exception sends the details of the error to a log file, and displays a friendly (or not so friendly) message to the user.
Inserting new data, or updating existing data is one of the more common database operations. Using PDO, this is normally a two-step process. Everything covered in this section applies equally to both UPDATE and INSERT operations.

Here’s an example of the most basic type of insert:
# STH means "Statement Handle"
$STH = $DBH->prepare("INSERT INTO folks ( first_name ) values ( 'Cathy' )");
$STH->execute();
You could also accomplish the same operation by using the exec() method, with one less call. In most situations, you’re going to use the longer method so you can take advantage of prepared statements. Even if you’re only going to use it once, using prepared statements will help protect you from SQL injection attacks.
Using prepared statements will help protect you from SQL injection.
A prepared statement is a precompiled SQL statement that can be executed multiple times by sending just the data to the server. It has the added advantage of automatically making the data used in the placeholders safe from SQL injection attacks.
You use a prepared statement by including placeholders in your SQL. Here’s three examples: one without placeholders, one with unnamed placeholders, and one with named placeholders.
# no placeholders - ripe for SQL Injection!
$STH = $DBH->("INSERT INTO folks (name, addr, city) values ($name, $addr, $city)");
# unnamed placeholders
$STH = $DBH->("INSERT INTO folks (name, addr, city) values (?, ?, ?);
# named placeholders
$STH = $DBH->("INSERT INTO folks (name, addr, city) value (:name, :addr, :city)");
You want to avoid the first method; it’s here for comparison. The choice of using named or unnamed placeholders will affect how you set data for those statements.
# assign variables to each place holder, indexed 1-3 $STH->bindParam(1, $name); $STH->bindParam(2, $addr); $STH->bindParam(3, $city); # insert one row $name = "Daniel" $addr = "1 Wicked Way"; $city = "Arlington Heights"; $STH->execute(); # insert another row with different values $name = "Steve" $addr = "5 Circle Drive"; $city = "Schaumburg"; $STH->execute();
There are two steps here. First, we assign variables to the various placeholders (lines 2-4). Then, we assign values to those placeholders and execute the statement. To send another set of data, just change the values of those variables and execute the statement again.
Does this seem a bit unwieldy for statements with a lot of parameters? It is. However, if your data is stored in an array, there’s an easy shortcut:
# the data we want to insert
$data = array('Cathy', '9 Dark and Twisty Road', 'Cardiff');
$STH = $DBH->("INSERT INTO folks (name, addr, city) values (?, ?, ?);
$STH->execute($data);
That’s easy!
The data in the array applies to the placeholders in order. $data[0] goes into the first placeholder, $data[1] the second, etc. However, if your array indexes are not in order, this won’t work properly, and you’ll need to re-index the array.
You could probably guess the syntax, but here’s an example:
# the first argument is the named placeholder name - notice named
# placeholders always start with a colon.
$STH->bindParam(':name', $name);
You can use a shortcut here as well, but it works with associative arrays. Here’s an example:
# the data we want to insert
$data = array( 'name' => 'Cathy', 'addr' => '9 Dark and Twisty', 'city' => 'Cardiff' );
# the shortcut!
$STH = $DBH->("INSERT INTO folks (name, addr, city) value (:name, :addr, :city)");
$STH->execute($data);
The keys of your array do not need to start with a colon, but otherwise need to match the named placeholders. If you have an array of arrays you can iterate over them, and simply call the execute with each array of data.
Another nice feature of named placeholders is the ability to insert objects directly into your database, assuming the properties match the named fields. Here’s an example object, and how you’d perform your insert:
# a simple object
class person {
public $name;
public $addr;
public $city;
function __construct($n,$a,$c) {
$this->name = $n;
$this->addr = $a;
$this->city = $c;
}
# etc ...
}
$cathy = new person('Cathy','9 Dark and Twisty','Cardiff');
# here's the fun part:
$STH = $DBH->("INSERT INTO folks (name, addr, city) value (:name, :addr, :city)");
$STH->execute((array)$cathy);
By casting the object to an array in the execute, the properties are treated as array keys.

Data is obtained via the ->fetch(), a method of your statement handle. Before calling fetch, it’s best to tell PDO how you’d like the data to be fetched. You have the following options:
In reality, there are three which will cover most situations: FETCH_ASSOC, FETCH_CLASS, and FETCH_OBJ. In order to set the fetch method, the following syntax is used:
$STH->setFetchMode(PDO::FETCH_ASSOC);
You can also set the fetch type directly within the ->fetch() method call.
This fetch type creates an associative array, indexed by column name. This should be quite familiar to anyone who has used the mysql/mysqli extensions. Here’s an example of selecting data with this method:
# using the shortcut ->query() method here since there are no variable
# values in the select statement.
$STH = $DBH->query('SELECT name, addr, city from folks');
# setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) {
echo $row['name'] . "\n";
echo $row['addr'] . "\n";
echo $row['city'] . "\n";
}
The while loop will continue to go through the result set one row at a time until complete.
This fetch type creates an object of std class for each row of fetched data. Here’s an example:
# creating the statement
$STH = $DBH->query('SELECT name, addr, city from folks');
# setting the fetch mode
$STH->setFetchMode(PDO::FETCH_OBJ);
# showing the results
while($row = $STH->fetch()) {
echo $row->name . "\n";
echo $row->addr . "\n";
echo $row->city . "\n";
}
The properties of your object are set BEFORE the constructor is called. This is important.
This fetch method allows you to fetch data directly into a class of your choosing. When you use FETCH_CLASS, the properties of your object are set BEFORE the constructor is called. Read that again, it’s important. If properties matching the column names don’t exist, those properties will be created (as public) for you.
This means if your data needs any transformation after it comes out of the database, it can be done automatically by your object as each object is created.
As an example, imagine a situation where the address needs to be partially obscured for each record. We could do this by operating on that property in the constructor. Here’s an example:
class secret_person {
public $name;
public $addr;
public $city;
public $other_data;
function __construct($other = '') {
$this->address = preg_replace('/[a-z]/', 'x', $this->address);
$this->other_data = $other;
}
}
As data is fetched into this class, the address has all its lowercase a-z letters replaced by the letter x. Now, using the class and having that data transform occur is completely transparent:
$STH = $DBH->query('SELECT name, addr, city from folks');
$STH->setFetchMode(PDO::FETCH_CLASS, 'secret_person');
while($obj = $STH->fetch()) {
echo $obj->addr;
}
If the address was ’5 Rosebud,’ you’d see ’5 Rxxxxxx’ as your output. Of course, there may be situations where you want the constructor called before the data is assigned. PDO has you covered for this, too.
$STH->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'secret_person');
Now, when you repeat the previous example with this fetch mode (PDO::FETCH_PROPS_LATE) the address will NOT be obscured, since the constructor was called and the properties were assigned.
Finally, if you really need to, you can pass arguments to the constructor when fetching data into objects with PDO:
$STH->setFetchMode(PDO::FETCH_CLASS, 'secret_person', array('stuff'));
If you need to pass different data to the constructor for each object, you can set the fetch mode inside the fetch method:
$i = 0;
while($rowObj = $STH->fetch(PDO::FETCH_CLASS, 'secret_person', array($i))) {
// do stuff
$i++
}
While this isn’t meant to cover everything in PDO (it’s a huge extension!) there are a few more methods you’ll want to know in order to do basic things with PDO.
$DBH->lastInsertId();
The ->lastInsertId() method is always called on the database handle, not statement handle, and will return the auto incremented id of the last inserted row by that connection.
$DBH->exec('DELETE FROM folks WHERE 1');
$DBH->exec("SET time_zone = '-8:00'");
The ->exec() method is used for operations that can not return data other then the affected rows. The above are two examples of using the exec method.
$safe = $DBH->quote($unsafe);
The ->quote() method quotes strings so they are safe to use in queries. This is your fallback if you’re not using prepared statements.
$rows_affected = $STH->rowCount();
The ->rowCount() method returns an integer indicating the number of rows affected by an operation. In at least one known version of PDO, according to [this bug report](http://bugs.php.net/40822) the method does not work with select statements. If you’re having this problem, and can’t upgrade PHP, you could get the number of rows with the following:
$sql = "SELECT COUNT(*) FROM folks";
if ($STH = $DBH->query($sql)) {
# check the row count
if ($STH->fetchColumn() > 0) {
# issue a real select here, because there's data!
}
else {
echo "No rows matched the query.";
}
}
I hope this helps some of you migrate away from the mysql and mysqli extensions. What do you think? Are there any of you out there who might make the switch?
Recently, Douglas Crockford released a neat tool that makes the process of developing and testing your JavaScript a bit easier. Interested in learning more? Watch today’s quick tip to find out!
test_code script I created in the screencastI’m curious; is this something that you’ll use in your daily coding? I’m still not sure, myself. Let us hear your thoughts in the comments!
.htaccess files are used to configure Apache, as well a range of other web servers. Despite the .htaccess file type extension, they are simply text files that can be edited using any text-editor. In this article, we’ll review what they are, and how you can use them in your projects.
Please note that .htaccess files don't work on Windows-based systems, although they can be edited and uploaded to a compatible web server, and on Linux-based systems they are hidden by default.
In order to work with htaccess files locally, to see how they work and generally play around with them, we can use XAMPP (or MAMP) on the Mac – a package that installs and configures Apache, PHP and MySQL. To edit these .htaccess files on Mac, we should use a text editor that allows for the opening of hidden files, such as TextWrangler.
A .htaccess file follows the same format as Apache’s main configuration file: httpd.conf. Many of the settings that can be configured using the main configuration file can also be configured with them, and vice versa.
A setting configured in an .htaccess file will override the same setting in the main configuration file for the directory which contains the file, as well as all of its subdirectories.
They are sometimes referred to as dynamic configuration files because they are read by the server on every request to the directory they are contained within. This means that any changes to an .htaccess file will take effect immediately, without requiring a reboot of the server, unlike changes made to the global configuration file. It also means that you pay a slight performance hit for using them, but they can be useful when you don't have access to the server's main configuration file.
So now we all know what .htaccess files are, how they are edited and worked with, and some of their pros and cons, let's look at how they can be used and some of the cool stuff they can do.
A popular use of .htaccess files is to perform redirects or rewrite URLs. This can help with SEO following a domain name change, or file-structure reorganisation, or can make long unsightly URL more friendly and memorable.
A redirection can be as simple as the following:
Redirect 301 ^old\.html$ http://localhost/new.html
This sets the HTTP status code to 301 (moved permanently) and redirects all requests to old.html transparently to new.html. We use a regular expression to match the URL to redirect, which gives us a fine degree of control to ensure only the correct URL is matched for redirection, but adds complexity to the configuration and administration of it. The full URL of the resource being redirected to is required.
A rewrite rule can be as simple as this:
RewriteEngine on RewriteRule ^old\.html$ new.html
In this example, we just provide a simple file redirect from one file to another, which will also be performed transparently, without changing what is displayed in the address bar. The first directive, RewriteEngine on, simply ensures that the rewrite engine is enabled.
In order to update what is displayed in the address bar of the visitor's browser, we can use the R flag at the end of the RewriteRule e.g.
RewriteRule ^old\.html$ http://hostname/new.html [r=301]
The r flag causes an external redirection which is why the full URL (an example URL here) to the new page is given. We can also specify the status code when using the flag. This causes the address bar to be updated in the visitor's browser.
One of the possible uses for URL rewriting I gave at the start of this section was to make unsightly URLs (containing query-string data) friendlier to visitors and search engines. Let's see this in action now:
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3
This rule will allow visitors to use a URL like products/turntables/technics/$1, $2 and $3 respectively. The [^/]+ character class within the parentheses means match any character except a forward-slash 1 or more times.
In practice, URL rewriting can be (and usually is) much more complex and achieve far greater things than this. URL rewriting is better explained using entire tutorials so we won't look at them in any further detail here.
It's just not cool to show the default 404 page anymore. Many sites take the opportunity offered by a file not found error to inject a little humour into their site, but at the very least, people expect the 404 page of a site to at least match the style and theme of any other page of the site.
Very closely related to URL rewriting, serving a custom error page instead of the standard 404 page is easy with an .htaccess file:
ErrorDocument 404 "/404.html"
That's all we need; whenever a 404 error occurs, the specified page is displayed. We can configure pages to be displayed for many other server errors too.
Using .htaccess files, we can enable password protection of any file or directory, to all users, or based on things like domain or IP address. This is after all one of their core uses. To prevent access to an entire directory, we would simple create a new .htaccess file, containing the following code:
AuthName "Username and password required" AuthUserFile /path/to/.htpasswd Require valid-user AuthType Basic
This file should then be saved into the directory we wish to protect. The AuthName directive specifies the message to display in the username/password dialog box, the AuthUserFile should be the path to the .htpasswd file. The Require directive specifies that only authenticated users may access the protected file while the AuthType is set to Basic.
To protect a specific file, we can wrap the above code in a <files> directive, which specifies the protected file:
<Files "protectedfile.html">
AuthName "Username and password required"
AuthUserFile /path/to/.htpasswd
Require valid-user
AuthType Basic
</Files>
We also require an .htpasswd file for these types of authentication, which contains a colon-separated list of usernames and encrypted passwords required to access the protected resource(s). This file should be saved in a directory that is not accessible to the web. There are a range of services that can be used to generate these files automatically as the password should be stored in encrypted form.
Another use of .htaccess files is to quickly and easily block all requests from an IP address or user-agent. To block a specific IP address, simply add the following directives to your .htaccess file:
order allow,deny deny from 192.168.0.1 allow from all
The order directive tells Apache in which order to evaluate the allow/deny directives. In this case, allow is evaluated first, then deny. The allow from all directive is evaluated first (even though it appears after the deny directive) and all IPs are allowed, then if the client's IP matches the one specified in the deny directive, access is forbidden. This lets everyone in except the specified IP. Note that we can also deny access to entire IP blocks by supplying a shorter IP, e.g. 192.168.
To deny requests based on user-agent, we could do this:
RewriteCond %{HTTP_USER_AGENT} ^OrangeSpider
RewriteRule ^(.*)$ http://%{REMOTE_ADDR}/$ [r=301,l]
In this example, any client with a HTTP_USER_AGENT string starting with OrangeSpider (a bad bot) is redirected back to the address that it originated from. The regular expression matches any single character (.) zero or more times (*) and redirects to the %{REMOTE_ADDR} environment variable. The l flag we used here instructs Apache to treat this match as the last rule so will not process any others before performing the rewrite.
Alongside controlling how the server responds to certain requests, we can also do things to the visitor's browser, such as forcing IE to render pages using a specific rendering engine. For example, we can use the mod_headers module, if it is present, to set the X-UA-Compatible header:
Header set X-UA-Compatible "IE=Edge"
Adding this line to an .htaccess file will instruct IE to use the highest rendering mode available. As demonstrated by HTML5 Boilerplate, we can also avoid setting this header on files that don't require it by using a <FilesMatch directive like so:
<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$" >
Header unset X-UA-Compatible
</FilesMatch>
Caching is easy to set up and can make your site load faster.
Caching is easy to set up and can make your site load faster. 'Nuff said! By setting a far-future expires date on elements of sites that don't change very often, we can prevent the browser from requesting unchanged resources on every request.
If you're running your site through Google PageSpeed or Yahoo's YSlow and you get the message about setting far-future expiry headers, this is how you fix it:
ExpiresActive on ExpiresActive on ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType audio/ogg "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/webm "access plus 1 month"
You can add different ExpiresByType directives for any content that is listed in the performance tool you're using, or anything else that you want to control caching on. The first directive, ExpiresActive on, simply ensures the generation of Expires headers is switched on. These directives depend on Apache having the mod_expires module loaded.
Another warning we may get in a performance checker refers to enabling compression, and this is also something we can fix simply by updating our .htaccess file:
FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css FilterProvider COMPRESS DEFLATE resp=Content-Type $text/javascript FilterChain COMPRESS FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
This compression scheme works on newer versions of Apache (2.1+) using the mod_filter module. It uses the DEFLATE compression algorithm to compress content based on its response content-type, in this case we specify text/html, text/css and text/javascript (which will likely be the types of files flagged in PageSpeed/Yslow anyhow).
In the above example we start out by declaring the filter we wish to use, in this case COMPRESS, using the FilterDeclare directive. We then list the content types we wish to use this filter. The FilterChain directive then instructs the server to build a filter chain based on the FilterProvider directives we have listed. The FilterProtocol directive allows us to specify options that are applied to the filter chain whenever it is run, the options we need to use are change=yes (the content may be changed by the filter (in this case, compressed)) and byteranges=no (the filter must only be applied to complete files).
On older versions of Apache, the mod_deflate module is used to configure DEFLATE compression. We have less control of how the content is filtered in this case, but the directives are simpler:
SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/css text/javascript
In this case we just set the compression algorithm using the SetOutputFilter directive, and then specify the content-types we'd like to compress using the AddOutputFilterByType directive.
Usually your web server will use one of these modules depending on which version of Apache is in use. Generally, you will know this beforehand, but if you are creating a generic .htaccess file that you can use on a variety of sites, or which you may share with other people and therefore you don't know which modules may be in use, you may wish to use both of the above blocks of code wrapped in <IfModule module_name> directives so that the correct module is used and the server doesn't throw a 500 error if we try to configure a module that isn't included. You should be aware that it's also relatively common for hosts that run a large number of sites from a single box to disable compression as there is a small CPU performance hit for compressing on the server.
We looked at some of the most common uses for .htaccess files, and reviewed how we can achieve certain tasks that, as website builders/maintainers, are of particular interest to us. As is the case with any introductory tutorial of this nature, the subjects we've covered are presented as introductions to a particular topic. There are many other options and configurations than we have been able to look at, so I'd strongly recommend further reading on any subject that is of particular interest.
You know it; I know it. We should be testing our code more than we do. Part of the reason we don’t, I think, is that we don’t know exactly how. Well, I’m getting rid of that excuse today: I’m teaching you to test your PHP with the EnhancePHP framework.
I’m not going to try to convince you to test your code; and we’re not going to discuss Test Driven Development, either. That’s been done before on Nettuts+. In that article, Nikko Bautista explains exactly why testing is a good thing and outlines a TDD workflow. Read that sometime, if you aren’t familiar with TDD. He also uses the SimpleTest library for his examples, so if you don’t like the look of EnhancePHP, you might try SimpleTest as an alternative.
As I said, we’ll be using the EnhancePHP. It’s a great little PHP library—a single file—that offers a lot of testing functionality.
Start by heading over to their download page and grabbing the latest version of the framework.
We’re going to be building a really simple Validation class to test. It won’t do too much: just return true if the item passes validation, or false if it doesn’t. So, set up a really simple little project:

We’ll do this is a semi-TDD fashion, so let’s start by writing a few tests.
Out little class is going to validate three things: email addresses, usernames, and phone numbers.
But before we get to writing actual tests, we’ll need to set up our class:
<?php
class Validation_test extends \Enhance\TestFixture {
public function setUp () {
$this-> val = new Validation();
}
}
This is our start; notice that we’re extending the class \Enhance\TestFixture. By doing so, we let EnhancePHP know that any public methods of this class are tests, with the exception of methods setUp and tearDown. As you might guess, these methods run before and after all your tests (not before and after each one). In this case, our setUp method will create a new Validation instance and assign it to a property on our instance.
By the way, if you’re relatively new to PHP, you might not be familiar with that \Enhance\TestFixture syntax: what’s with the slashes? That’s PHP namespacing for you; check out the docs if you aren’t familiar with it.
So, the tests!
Let’s start by validating email addresses. As you’ll see, just doing a basic test is pretty simple:
public function validates_a_good_email_address () {
$result = $this->val->validate_email("john@doe.com");
\Enhance\Assert::isTrue($result);
}
We simply call the method we want to test, passing it a valid email address, and storing the $result. Then, we hand $result to the isTrue method. That method belongs to the \Enhance\Assert class.
We want to make sure our class will reject non-email addresses. So, let’s test for that:
public function reject_bad_email_addresses () {
$val_wrapper = \Enhance\Core::getCodeCoverageWrapper('Validation');
$val_email = $this->get_scenario('validate_email');
$addresses = array("john", "jo!hn@doe.com", "john@doe.", "jo*hn@doe.com");
foreach ($addresses as $addr) {
$val_email->with($addr)->expect(false);
}
$val_email->verifyExpectations();
}
This introduces a pretty cool feature of EnhancePHP: scenarios. We want to test a bunch of non-email addresses to make sure our method will return false. By creating a scenario, we essentially wrap an instance of our class in some EnhancePHP goodness, are write much less code to test all our non-addresses. That’s what $val_wrapper is: a modified instance of our Validation class. Then, $val_email is the scenario object, somewhat like a shortcut to the validate_email method.
Then, we’ve got an array of strings that should not validate as email addresses. We’ll loop over that array with a foreach loop. Notice how we run the test: we call the with method on our scenario object, passing it the parameters for the method we’re testing. Then, we call the expect method on that, and pass it whatever we expect to get back.
Finally, we call the scenario’s verifyExpectations method.
So, the first tests are written; how do we run them?
Before we actually run the tests, we’ll need to create our Validation class. Inside lib.validation.php, start with this:
<?php
class Validation {
public function validate_email ($address) {
}
}
Now, in test.php, we’ll pull it all together:
<?php require "vendor/EnhanceTestFramework.php"; require "lib/validation.php"; require "test/validation_test.php"; \Enhance\Core::runTests();
First, we’ll require all the necessary files. Then, we call the runTests method, which finds our tests.
Next comes the neat part. Fire up a server, and you’ll get some nice HTML output:

Very nice, right? Now, if you’ve got PHP in your terminal, run this is in the terminal:

EnhancePHP notices that you’re in a different environment, and adjusts its output appropriately. A side benefit of this is that if you’re using an IDE, like PhpStorm, that can run unit tests, you can view this terminal output right inside the IDE.
You can also get XML and TAP output, if that’s what you prefer, just pass \Enhance\TemplateType::Xml or \Enhance\TemplateType::Tap to the runTests method to get the appropriate output. Note that running it in the terminal will also produce command-line results, no matter what you pass to runTests.
Let’s write the method that causes our tests to pass. As you know, that’s the validate_email. At the top of the Validation class, let’s define a public property:
public $email_regex = '/^[\w+-_\.]+@[\w\.]+\.\w+$/';
I’m putting this in a public property so that if the user wants to replace it with their own regex, they could. I’m using this simple version of an email regex, but you can replace it with your favourite regex if you want.
Then, there’s the method:
public function validate_email ($address) {
return preg_match($this->email_regex, $address) == 1
}
Now, we run the tests again, and:

Time for more tests:
Let’s create some tests for usernames now. Our requirements are simply that it must be a 4 to 20 character string consisting only of word characters or periods. So:
public function validates_a_good_username () {
$result = $this->val->validate_username("some_user_name.12");
\Enhance\Assert::isTrue($result);
}
Now, how about a few usernames that shouldn’t validate:
public function rejects_bad_usernames () {
$val_username = $this->get_scenario('validate_username');
$usernames = array(
"name with space",
"no!exclaimation!mark",
"ts",
"thisUsernameIsTooLongItShouldBeBetweenFourAndTwentyCharacters");
foreach ($usernames as $name) {
$val_username->with($name)->expect(false);
}
$val_username->verifyExpectations();
}
This is very similar to our reject_bad_email_addresses function. Notice, however, that we’re calling this get_scenario method: where’s that come from? I’m abstracting the scenario creation functionality into private method, at the bottom of our class:
private function get_scenario ($method) {
$val_wrapper = \Enhance\Core::getCodeCoverageWrapper('Validation');
return \Enhance\Core::getScenario($val_wrapper, $method);
}
We can use this in our reject_bad_usernames and replace the scenario creation in reject_bad_email_addresses as well. Because this is a private method, EnhancePHP won’t try to run it as a normal test, the way it will with public methods.
We’ll make these tests pass similarly to how we made the first set pass:
# At the top . . .
public $username_regex = '/^[\w\.]{4,20}$/';
# and the method . . .
public function validate_username ($username) {
return preg_match($this->username_regex, $username) == 1;
}
This is pretty basic, of course, but that’s all that’s needed to meet our goal. If we wanted to return an explanation in the case of failure, you might do something like this:
public function validate_username ($username) {
$len = strlen($username);
if ($len < 4 || $len > 20) {
return "Username must be between 4 and 20 characters";
} elseif (preg_match($this->username_regex, $username) == 1) {
return true;
} else {
return "Username must only include letters, numbers, underscores, or periods.";
}
}
Of course, you might also want to check if the username already exists.
Now, run the tests and you should see them all passing.
I think you’re getting the hang of this by now, so let’s finish of our validation example by checking phone numbers:
public function validates_good_phonenumbers () {
$val_phonenumber = $this->get_scenario("validate_phonenumber");
$numbers = array("1234567890", "(890) 123-4567",
"123-456-7890", "123 456 7890", "(123) 456 7890");
foreach($numbers as $num) {
$val_phonenumber->with($num)->expect(true);
}
$val_phonenumber->verifyExpectations();
}
public function rejects_bad_phonenumnbers () {
$result = $this->val->validate_phonenumber("123456789012");
\Enhance\Assert::isFalse($result);
}
You can probably figure out the Validation method:
public $phonenumber_regex = '/^\d{10}$|^(\(?\d{3}\)?[ |-]\d{3}[ |-]\d{4})$/';
public function validate_phonenumber ($number) {
return preg_match($this->phonenumber_regex, $number) == 1;
}
Now, we can run all the tests together. Here’s what that looks like from the command line (my preferred testing environment):

Of course, EnhancePHP can do a lot more than what we’ve looked at in this little example. Let’s look at some of that now.
We very briefly met the \Enhance\Assert class in our first test. We didn’t really use it otherwise, because it’s not useful when using scenarios. However, it’s where all the assertion methods are. The beauty of them is that their names make their functionality incredibly obvious. The following test examples would pass:
\Enhance\Assert::areIdentical("Nettuts+", "Nettuts+")\Enhance\Assert::areNotIdentical("Nettuts+", "Psdtuts+")\Enhance\Assert::isTrue(true)\Enhance\Assert::isFalse(false)\Enhance\Assert::contains("Net", "Nettuts+")\Enhance\Assert::isNull(null)\Enhance\Assert::isNotNull('Nettust+')\Enhance\Assert::isInstanceOfType('Exception', new Exception(""))\Enhance\Assert::isNotInstanceOfType('String', new Exception(""))There are a few other assertion methods, too; you can check the docs for a complete list and examples.
EnhancePHP can also do mocks and stubs. Haven’t heard of mocks and stubs? Well, they aren’t too complicated. A mock is a wrapper for object, that can keep track of what methods are called, with what properties they are called, and what values are returned. A mock will have some test to verify, as we’ll see.
Here’s a small example of a mock. Let’s start with a very simple class that counts:
<?php
require "vendor/EnhanceTestFramework.php";
class Counter {
public $num = 0;
public function increment ($num = 1) {
$this->num = $this->num + $num;
return $this->num;
}
}
We have one function: increment, that accepts a parameter (but defaults to 1), and increments the $num property by that number.
We might use this class if we were building a scoreboard:
class Scoreboard {
public $home = 0;
public $away = 0;
public function __construct ($home, $away) {
$this->home_counter = $home;
$this->away_counter = $away;
}
public function score_home () {
$this->home = $this->home_counter->increment();
return $this->home;
}
public function score_away () {
$this->away = $this->away_counter->increment();
return $this->home;
}
}
Now, we want to test to make sure that the Counter instance method increment is working properly when the Scoreboard instance methods call it. So we creat this test:
class ScoreboardTest extends \Enhance\TestFixture {
public function score_home_calls_increment () {
$home_counter_mock = \Enhance\MockFactory::createMock("Counter");
$away_counter = new Counter();
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment') );
$scoreboard = new Scoreboard($home_counter_mock, $away_counter);
$scoreboard->score_home();
$home_counter_mock->verifyExpectations();
}
}
\Enhance\Core::runTests();
Notice that we start by creating $home_counter_mock: we use the EnhancePHP mock factory, passing it the name of the class we’re mocking. This returns a “wrapped” instance of Counter. Then, we add an expectation, with this line
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment') );
Our expectation just says that we expect the increment method to be called.
After that, we go on to create the Scoreboard instance, and call score_home. Then, we verifyExpectations. If you run this, you’ll see that our test passes.
We could also state what parameters we want a method on the mock object to be called with, what value is returned, or how many times the method should be called, with something like this:
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment')->with(10) );
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment')->times(2) );
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment')->returns(1) );
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment')->with(3)->times(1) );
$home_counter_mock->addExpectation( \Enhance\Expect::method('increment')->with(2)->returns(2) );
I should mention that, while with and times will show failed tests if the expectations aren’t meant, returns doesn’t. You’ll have to store the return value and use an assertion to very that. I’m not sure why that’s the case, but every library has its quirks :). (You can see an example of this in the library examples in Github.)
Then, there are stubs. A stub fills in for a real object and method, returning exactly what you tell it to. So, let’s say we want to make sure that our Scoreboard instance is correctly using the value it receives from increment, we can stub a Counter instance so we can control what increment will return:
class ScoreboardTest extends \Enhance\TestFixture {
public function score_home_calls_increment () {
$home_counter_stub = \Enhance\StubFactory::createStub("Counter");
$away_counter = new Counter();
$home_counter_stub->addExpectation( \Enhance\Expect::method('increment')->returns(10) );
$scoreboard = new Scoreboard($home_counter_stub, $away_counter);
$result = $scoreboard->score_home();
\Enhance\Assert::areIdentical($result, 10);
}
}
\Enhance\Core::runTests();
Here, we’re using \Enhance\StubFactory::createStub to create our stub counter. Then, we add an expectation that the method increment will return 10. We can see that the result it what we’d expect, given our code.
For more examples of mocks and stub with the EnhancePHP library, check out the Github Repo.
Well, that’s a look at testing in PHP, using the EnhancePHP framework. It’s an incredibly simple framework, but it provides everything you need to do some simple unit testing on your PHP code. Even if you choose a different method/framework for testing your PHP (or perhaps roll your own!), I hope this tutorial has sparked an interest in testing your code, and how simple it can be.
But maybe you already test your PHP. Let us all know what you use in the comments; after all, we’re all here to learn from each other! Thank you so much for stopping by!
Web typography is accessible to everyone. If you’ve ever built or designed a web page, you’ve almost definitely turned your hand to web typography of some sort. As a discipline, typography has been practiced for hundreds of years, and as a result there are many lessons and conventions we can learn from.
Saying that, web typography is a bit like skiing. It’s unwise to just grab a couple of wooden planks and throw yourself down a black piste; you’ll develop bad habits and perhaps even break a bone. Before diving into your next web project, make sure you’ve at least considered the fundamentals.
I can’t help you with skiing, but I can help you with web typography. If you’ve never looked properly into the subject, or even if you need a refresher, Introduction to Web Typography is for you!
As with all Tuts+ Premium courses, we’ll start at the beginning, working through the basics and some terminology, before moving on to the practicalities. During the process we’ll build ourselves a demo web page which will highlight the theory we cover. Even if you’re not yet confident with HTML and CSS, each video comes with source files stepping off from where the previous video ended.
Take a look at the episodes listed below and be sure to check out the preview videos even if you don’t yet have a Premium subscription.
As with all Tuts+ Premium courses, each lesson has an accompanying forum where you can discuss ideas and questions which arise as you watch the videos.
The recently re-launched Tuts+ Premium is a service that provides top-tier training in a variety of creative fields. Whether you prefer books, visual training, or in depth tutorials, we have you covered. While we unfortunately can’t afford to provide the service for free, it’s only $19 a month – less than you’d spend on dinner.
I hope you’ll consider checking it out! In addition to learning a huge variety of new skills, it’s also a fantastic way to say thank you to Nettuts+.
Also view our Page Rank, Website Review/Ratings section and the Web site promotion and traffic boosting section.
| Save Your Digital Life! Backup Online accout information from YouTube Channel TinkerNut | ||
Don't wait for disaster to strike your web accounts. Be prepared and back them all up using these simple tools. Backupify TinkerNut Main Web Site |
DomainsWithUs services are very aggressively priced and come with features that other providers require you to pay extra for. FREE Customer Support with easy transfer process. A quality website address at a highly competitive price.
HostingWithUs provides quality web hosting at an affordable price. We do not require a setup fee nor a 3, 6, or 12 month prepay to get our low prices. We offer 24x7 server monitoring with daily backups. We have live Customer Support to help you with any questions, needs, or concerns that you might have. Put the years of experience from the Hosting With Us Team to work for you. Have a question? Ask our live help, or send an email. We guarantee a one business day response. Another services are very aggressively priced and come with features that other providers require you to pay extra for.
Depositit automatically protects all the essential data you hold on your computer, laptop, mobile phone and PDA. Keep your data safe from damaging viruses, hardware errors & natural disasters.
Domain Name Secrets Revealed Free domain name research tools. WHOIS lookup, Expired domain name search, trademark research, domain backorders and much more... Includes links to Webmaster Tools etc...
Measuring up SEO tips and Links, specialize in website promotion.
WWW Information Pack A reference guide to the World Wide Web at the University of Aberdeen.
PuTTY
is a free implementation of Telnet and SSH for Win32
and Unix
platforms, along with an xterm terminal emulator. Also
see cPanel.
FTP. File Transfer Protocol. Hosting. Website Hosting links
Web usability and user interface design
King of the Web is a place for the web to vote for who and what is awesome online. Our goal is to reward and promote great online content. So get ready to help choose the next King or create your own campaign to compete for cash, prizes, and the crown!. King of the Web is a straight-up democracy. That means you, your fans & followers, your friends, and even the haters get to decide who becomes King.
PicLens is a new image browser extension/plugin that's available for Firefox, IE, and Safari. More Browser Tools and Plugins
WindizUpdate. This free website allows users of Mozilla Firefox 0.9.3, Netscape 4.0, Mozilla Firebird 0.7, Opera 5, or K-Meleon 0.9, to keep their copy of Windows up-to-date.
Greasemonkey is a Firefox extension which lets you to add bits of DHTML ("user scripts") to any web page to change its behavior. In much the same way that user CSS lets you take control of a web page's style, user scripts let you easily control any aspect of a web page's design or interaction.
FlashGot is a free Mozilla/Firefox/Thunderbird extension, meant to handle single and massive ("all" and "selection") downloads with several external Download Managers. FlashGot turns every supported download manager in a download manager for Firefox!
Download Netscape Composer. Composer is a free web page editor. Fully integrated, web document-authoring tool.
OldVersion.com Sometimes upgrading to a newer version can be a good thing. Other times, your computer may not be compatible with the new version, the new version is bloated, or all the good options are no longer available. OldVersion.com has been supplying the online community with old versions of various programs since 2001. The service is utilized by thousands of users every day and has been featured in newspapers and magazines as well as on radio and television.
HTMLfixIT is a help and news site for anything Internet or web design related.
W3C The Semantic Web provides a common framework that allows data to be shared and reused across application, enterprise, and community boundaries. It is a collaborative effort led by W3C with participation from a large number of researchers and industrial partners. It is based on the Resource Description Framework (RDF).
The WebSocket API. (W3C) This specification defines an API that enables Web pages to use the WebSocket protocol for two-way communication with a remote host.
Data Center Knowledge (DCK) is a leading source of daily news and analysis about the data center industry, (very basically a Data Center is a place where web site data is stored), with an emphasis on the trends driving the powerful growth in demand for mission-critical facilities, as well as the challenges and opportunities presented by high-density computing and its impact on power and cooling. If cool videos of data center tours are what you seek, check out our DCK video archive and the Data Center Videos channel on YouTube. Data Center Investor channel for performance updates on data center stocks. For tracking individual stocks, you can use the “Companies” link in our navigation bar, or just type the company’s ticker symbol
Nvu (pronounced N-view, for a "new view") makes managing a web site a snap. Now anyone can create web pages and manage a website with no technical expertise or knowledge of HTML. A complete Web Authoring System for Linux Desktop users as well as Microsoft Windows and Macintosh users to rival programs like FrontPage and Dreamweaver.
Selida is one of the most advanced FREE HTML editors on the planet. Selida features a very effective WYSIWYG, (What You See Is What You Get), editor, Code Completion and a complete HTML 4 reference. Selida was engineered to be complete and capable - all with the decidedly best price on the planet - $0 !
HTML - Kit resources for web developers.
Web Tools Resource. This site is for webmasters and "want to be" webmasters. From the novice up to the experienced, everyone will find something useful to them. From tutorials, web promotion to web design and graphics
Test the Readability of a Website. Gunning Fog, Flesch Reading Ease, and Flesch-Kincaid are reading level algorithms that can be helpful in determining how readable your content is. Reading level algorithms only provide a rough guide, as they tend to reward short sentences made up of short words. Whilst they're rough guides, they can give a useful indication as to whether you've pitched your content at the right level for your intended audience.
Dart, A class-based optionally typed programming language for building web applications. Dart’s design goals are:-
Check Redirects and Server Header HTTP Status Codes
Guide to the Section 508 Standards for Electronic and Information Technology
Web server talk Forum
Denial of Service (DoS) Attack Resources.
The Block List Checker tool allows you to query a number of spam-block and server boycott lists with an IP address you specify to try and ascertain if the IP address is listed as a known spammer or an open mail relay. This can be useful if you need to check the authenticity of logs or emails.
Search engine SPAM detector "Is your work/business based on detectable tricks?" What does this tool do? This tool analyzes a web page, searching for characteristics that search engines could consider spam. If you don't know what "search engine spamming" means or if you want to know how this tool works, you can read the Spam detector FAQ.
SpamCop Blocking List. Are you I listed?: You can check the status of any server by entering the
Who is Tools. DNS Tools, Domain Name System Tools.
Spam Filters Email software and Autoresponders
How to block comment spammers without using captchas (spam, bot, proxies). Spammers usually use proxies to hide their real IP address and to prevent IP blocking. However you can specifically block their proxy servers by using Apache rewrite rules via .htaccess. Are you concerned about this method because your legal visitors might be affected? Don't worry, your visitors probably would use anonymous proxies, but those won't be blocked! More Spam Filters tools. Read more about captchas.
Surf Anonymous Free A ree Internet utility that anonymizes your web surfing by hiding your IP address, thereby protecting you from the vulnerabilities associated with it. Surf Anonymous Free can connect to our servers and gets the most stable, fresh and fast working IP location called proxy. Then it puts that information in your browser such as Firefox, Internet Explorer or Opera. Your real IP address and location will become inaccessible. So you can browse with completely concealed identity. It’s Easy, Fast, and Free.
Introduction to website mirrors. The site is about webbots : how to use them to browse offline or as webmaster's tools, how to detect them and fight against their unwanted visits.
ICANN, (Internet Corporation for Assigned Names and Numbers), starts to use the next-gen IP addresses known as IV6 More IV6 Information ICANN Website
Web Developers Notes. Free online tutorials, Tips, Tricks, Resources, Graphics, Designing, Web promotions. Find out what it takes to be a Web Developer. This site is packed with tutorials, tips, tricks, Internet resources and articles.
Webmaster Yellow Pages Complete Resources Directory For Webmasters!
Interactive Web Site Tools and Community Software @ WhatHelps? The Web's most customizable tools and add-ons: online community, message board, chat room, discussion lists, newsletters, web calendar, Knowledge Base, and much more!
Website Design, Promotion, Revenue and Scripting Tips - Coding and Lots of free tips, tutorials and articles on every aspect of your website. It's a one-stop comprehensive guide to managing your site.
YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. YSlow is a Firefox add-on integrated with the Firebug web development tool. YSlow grades web page based on one of three predefined ruleset or a user-defined ruleset. It offers suggestions for improving the page's performance, summarizes the page's components, displays statistics about the page, and provides tools for performance analysis, including Smush.it and JSLint. Also view Browser and Browser Tools
Webmaster Resources - Tips, Tools and Resources for Anything Website Development Related Such as Website Design, Hosting, Affiliate Marketing, Internet Marketing and more...
Reaction Engine. A Free SEO Analysis Tool This is an instant, free and no-registration tool to analyse the SEO performance of a URI for a given keyphrase. Reports include a variety of useful information and structured recommendations to improve overall effectiveness
Link Price Calculator helps you to find the value of various links and site URLs. More Making Money links
The World Wide Web Consortium Tips for Webmasters
Help Center Live is a free open source solution. Help Center Live is dedicated to making available the tools to help you serve your customers and visitors. The Help Center Live Community produces Help Center Live free of charge. All we ask for is your ideas and comments.
cURL groks URLs. cURL is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE and LDAP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks. PHP users! Look for the PHP/CURL binding! More PHP links.
Check server headers Tools and verify HTTP status codes. There are seven HTTP status codes (200|301|302|304|307|404|410) that we are primarily interested in from an indexing and search engine marketing perspective. It is recommended that you verify your URIs are returning the proper Status-Code in the Server Header.
Ex-Domain Name, Domain Name URL's, Dynamic URL's, Sub Directory, File Names and Redirection Search Engine Friendly Redirect Checker. A lot of us lose out on valuable search engine traffic due to incorrectly configuring our redirects. It is very import that when a search engine comes to crawl your website it is able to follow any redirects you have set up. This tools help you determine if the redirect you have created is Search Engine Friendly. How to Redirect Article for information on how to create Search Engine Friendly redirects Also see Short URL Names
Help Desk Software By Kayako SupportSuite v3.00.80
Webmasters Cavern is a resource of Web Tools and Web Graphics. Browse our selection of high quality webmaster articles or submit your website to our Webmaster Directory.
How to Construct Your Privacy Policy. Constructing a privacy policy is a simple process. Simply fill out the questions below and submit it to us - we'll send you a Web page to post to your site. The DMA's Privacy Policy Generator. Read DOT Solutions main Privacy Policy Also view Web Master Law. Legal issues for Web Masters
DOM Monster is our answer to JavaScript performance tools that may not give you the information you want. It indicates the how well HTML, HTML 5 is optimized helping you the performance of web pages, etc.. DOM Monster is a cross-platform, cross-browser, (browser links), bookmarklet that will analyze the DOM & other features of the page you're on, and give you its bill of health.
ISO Country Codes. This is a list of 2 and 3 digit ISO country codes and their corresponding country names. It is useful for shopping cart systems, and other on-line registration systems.
SMTP Commands. (Simple Mail Transfer Protocol) An eMail protocol.
POP3 Commands This is a list of the POP3 client commands. (Post Office Protocol) An eMail protocol.
ASCII Character Codes. This is a list of character codes in decimal, hex, octal and binary.
Unicode The Unicode Consortium enables people around the world to use computers in any language. Our members develop the Unicode Standard, Unicode Locales (CLDR), and other standards. These specifications form the foundation for software internationalization in all major operating systems, search engines, applications, and the Web.
ASCII, American Code for Information Interchange. Character Symbols.
Email Software and SMTP POP codes Simple Mail Transfer Protocol) (Post Office Protocol)
Configuring SMTP Authentication for Your Email Client(s)
|
Discussion Boards: |
FAQ: |
Mailing List: |
|
Guestbooks: |
Image Galleries: |
Site Builders: |
|
Polls and Surveys: |
Project Management: |
|
|
Content Management Systems |
||
|
Customer Support: |
Other Scripts: Dew-NewPHPLinks |
ECommerce: |
The Internet Society History Page
How the Internet Came to Be The birth of the ARPANET Vinton Cerf, as told to Bernard Aboba.
The First Theory of Packet Networks
The World Wide Web Consortium (W3C) Website validation, develops interoperable technologies (specifications, guidelines, software, and tools) to lead the Web to its full potential. W3C is a forum for information, commerce, communication, and collective understanding.
The Web Standards Project is a grassroots coalition fighting for standards that ensure simple, affordable access to web technologies for all.Web Standards Group is for web designers & developers who are interested in web standards (HTML, HTML 5, XHTML, XML, CSS, XSLT etc.) and best practices (accessible sites using valid and semantically correct code).
WebPatterns a place to discuss, document and collaborate on patterns for web design and development.
Web site design and the World Wide Web Guidance for those contemplating their first Web site with information on choosing a Web designer, domain names, Web hosts, HTML, optimization, promotion, and much more.
Broadband Stakeholder Group. The BSG is the industry-government forum tackling strategic issues across the converging broadband value chain.
Microsoft Doctor Watson for Windows Dr. Watson for Windows is a program error debugger that gathers information about your computer when an error (or user-mode fault) occurs with a program. Technical support groups can use the information that Dr. Watson obtains and logs to diagnose a program error. When an error is detected, Dr. Watson creates a text file (Drwtsn32.log) that can be delivered to support personnel by the method they prefer. You also have the option of creating a crash dump file, which is a binary file that a programmer can load into a debugger.
Net Tools is a comprehensive set of host monitoring, network scanning, security, administration tools and much more, all with a highly intuitive user interface. It's an ideal tool for those who work in the network security, administration, training, internet forensics or law enforcement internet crimes fields.
Image SEO Tool This tool examines the images on your web page and tells you how well they are being "seen" by search engines. Use alt tags for images these help users with poor eyesight and may help search engines and users understand what the image is about.
Social Networks Backlink Checker. Free SEO Tools for search engine optimization. Social networks have become important part any SEO campaign. Check any website's indexed backlinks in Google from the major social networks with this SEO tool, including Twitter, Facebook, Myspace and more for free. More Page Rank. Website Review, Ratings and URL listing tests and Social bookmarks. Links
RefDev Web Tools and programming Threadwatch Computer World News and information.
IBM Computers AS/400 Hardware., Services, & Support Whatever your need is for your AS/400 or iSeries, we have the solution!
Site Tutor - Webmaster Resources and Tutorials 1000websitetools
Webhosting.info Web Host Rated, Biggest growth etc...
Internet Marketing Tips and Resources: Tools and advice to design a better website and market it more effectively. You can freely reprint our weekly articles in your website, newsletter or ebook.
Zymic offers a large amount of quality free templates, free tutorials, free resource downloads, programming, tutorials and much more!
Search-This Empowering Webmasters for Online Success! Website promotion, internet marketing, Blogging, Web standards, usability, design, development
Elefun Desktops wallpapers and screensavers. EleFun Multimedia is a world leader in developing Animated Desktop Wallpapers. This leadership results from high-tech approach and unmatched creative potential. This also makes EleFun Multimedia one of the leading makers of animated Screensavers.
WebKnowHow.Net Links to over 1,200 Resources for webmasters Web Developers Index This auction-type web site allows webmasters to create your projects and web developers to bid on various project for Free, with no monthly Fee and any commission.
Free Webmaster Resources Web design related content including templates, affiliates, flash generation, graphics, scripts, tutorials, web hosts, site promotion, URL redirection, and more.
The WellStyled Workshop. Welcome, web designers. Welcome to the CSS and web design workshop, the WellStyled Workshop. Enjoy all CSS, HTML or Javascript techniques, tricks and hacks you can find here. Hopefully, you find them useful.
Web World - A directory and search engine of quality sites organized by subject offering free and paid site listings, add your site.
Webmaster Tools Central - A webmaster's directory of 1300+ tools and services to help build, promote, improve and maintain websites. Website graphics, java, editors, ASP, DHTML, online tools, PHP, flash, utilities, promotion, visual basic, tutorials, VRML, websites, XML and much more.
321Webmaster.com We offer one of the largest directories of free webmaster resources, free web hosting, free web site tools, and even free e-mail.
The Site Wizard Website design, promotion, programming and revenue making.
Software QA and Testing Resource Center (Includes Web Usability and Web Security information)
Bull Marketer-Webmaster Resources - Webmaster tools, webmaster resources, webmaster links, free clipart, free animations, marketing resources, free website content, webmaster tutorials, giant webmasters links directory, search engine optimization and submission, and much more.
How to join the rich and famous. Lifestyle of the rich and famous. What you need to join the rich and famous and how to join the rich and famous.
| Preventing Virtual Blight | ||
| Follow, Nofollow. Index, Noindex |
Discover the SECRET to generating a 6 figure income every year. Grab your FREE download here.
Internet World Internet conferences and Events, etc...
ApplyTools.com - Free downloads for Webmasters: Free e-commerce tools, Free expired domain lists, free Java scripts, free Perl CGI, and a live web robot for free download!
THE altERNATIVE SITE Alternatives for affordable web design and web promotion- free alternatives as well. Essays on many topics : Physics, Technology, Religion and Humaniora. Free greeting cards and online ebooks.
Web Developer Computer Hope I am Not a Geek Server Talk.org
Dashboard. Confluence is the enterprise wiki designed to make it easy for you and your team to share information with each other, and with the world.
The Internet Connectivity Evaluation Tool. Microsoft®, checks your Internet router to see if it supports certain technologies. You can use this tool on a PC running either the Windows Vista or Windows XP operating system. If you're planning to run Windows Vista, this tool can verify whether your existing Internet router supports advanced features, such as improved download speeds and face-to-face collaboration using Windows Meeting Space.
Kerberos is a network authentication protocol. It is designed to provide strong authentication for client/server applications by using secret-key cryptography. A free implementation of this protocol is available from the Massachusetts Institute of Technology. Kerberos is available in many commercial products as well.
Graphichunter.com - Original software publisher for products like Internet Graphic Hunter, Internet Form Hunter, Internet Freecell Hunter, Hunter Dictionary etc.
Image SEO Tool. This tool examines the images on your web page and tells you how well they are being "seen" by search engines like Google. Check alt tags for suiabiliyt, etc... More SEO Tips and News More Graphics.
Adbility Covers various website issues such as Affiliated Marketing, Traffic Measurement, Advertising etc.
DesignAndCreate.Com ClipArt, Animations & Fonts.
Visit Top10Links Top10Links is an Internet directory of hand picked links to the top 10 web sites. Sites are organized into 14 top level categories covering over 1000 sub-categories that visitors can search or browse from any page.
O3D is an open-source web API for creating rich, interactive 3D applications in the browser. This API is shared at an early stage as part of a conversation with the broader developer community about establishing an open web standard for 3D graphics. More Three Dimensional Graphics VRML, (Virtual Reality Modelling Language), and Stereo Graphic Images
40 Online Generators for Web Designers Should BookmarkCerebus Webmaster Resources - A searchable directory with hundreds of freebies to help webmasters enhance, promote, design and make money of their sites. Also some onsite features like meta tag generator, scripts archive, SE submitter etc.
WebKnowHow.Net Tutorials, scripts, articles, FAQ's and and many more CGI related resources.
Web development, Tutorials. These tutorials are designed to support college-level classes in Web development, but they can provide introductions to these topics for anyone interested. All are works in progress and are being expanded as time permits. They run under Microsoft Server 2003 and .NET Framework 2.0, and have been tested using Microsoft Internet Explorer 6.0 under Windows XP. More Programming and Coding links
Click Here for a lot of useful web master links.
Internet Search Engine Database
1000 Web Site Tools This site provide only best resources for webmasters to help build, maintain and promote web sites. Here you will find such things as free hosting, promotion, web graphics, fonts, java & JavaScripts, CGI, script collections, guestbooks, counters, HTML editors, graphics software, and much more.
Tools4webmaster - The largest webmaster tools ever offered on the web with resell rights.
The Internet Traffic Report The Internet Traffic Report monitors the flow of data around the world. It then displays a value between zero and 100. Higher values indicate faster and more reliable connections.
Discover over 850,000 secret domain names you can grab for pennies
Best T1 Service Blast your Internet access Speeds in Four Easy Steps. Receive real-time T1 from GeoQuote. Select a plan that interests you. Discuss the best options for your T1 plan. Logon and notice the speed.
CogniSurf Discount Internet Access Whether you are a reseller or an individual, CogniSurf® has dial-up Internet solutions to meet your specific needs. Through strategic alliances with industry leaders, we provide nationwide access numbers that allow you to connect to the Internet from virtually anywhere in the United States and Canada. As eBusiness demands increase, CogniSurf® continuously provides a secure, reliable connection to the Internet with access to the latest information, email, newsgroups and corporate network resources to maximize your business' performance.
Webmaster's Toolkit - this is a software utility that allows you quickly measure the size of objects on the screen with pixel ruler, picking the colour value from any pixel of the screen and alter or produce your own colors with the Photoshop-style Color Picker. This program might be useful for web developers who often face the need to quickly measure the size of an object or the space between objects on the screen up to a pixel, quickly detect the color in an HTML code or alter its hue, brightness or saturation. Also the program may be useful for developers of different specializations who deal in one way or another with user interfaces.
OpenSearch is a collection of simple formats for the sharing of search results. An OpenSearch description document can be used to describe the web interface of a search engine. Why use OpenSearch? The web is a big place, and search engines that crawl the surface of the web are picking up only a small fraction of the great content that is out there. Moreover, some of the richest and most interesting content can not even be crawled and indexed by one search engine or navigated by one relevancy algorithm alone. Different types of content require different types of search engines. The best search engine for a particular type of content is frequently the search engine written by the people that know the content the best. OpenSearch helps search engines and search clients communicate by introducing a common set of formats to perform search requests and syndicate search results. You can use OpenSearch formats to help people discover and use your search engine and to syndicate search results across the web.
I Help You Excellent visualisation of which search engines provide information to others.
WebKnowHow provides links to over 1200 resources for webmasters.
Internet Traffic Report monitors the flow of data around the world.
Timerway Internet Marketing News, Tips, Tools, and Resources.
Bob Cerelli's Windows Page More Microsoft Windows® Links
AppTools provides tools, tutorials, and some tricks & tips for web developers.
Videos to Watch and Video Publishing
Freebie Tools - Webmaster Resources
Affordable-website-design. Lots of useful links and content for your site.
Page Rank Info. Useful free SEO Tools on the same place
FILExt, the file extension source. FILExt is a detailed database of file extensions and programs that use them. FILExt is not a general support site. A search on the database here might very well result in multiple possibilities; it will be up to you to determine which, if any, of these are the program/format you require information about. To help, many of the links on this site will open a new browser window so you have constant reference to the FILExt data. With that in mind, let's get started...
Mime Types. File types, file extensions
HTTP Response Codes (Code returned be server when an error occurs) by Rasterweb.net
LibrarySpot.com - A free virtual library resource center for just about anyone exploring the Web for valuable research information.
Whatis.com - Definitions for thousands of the most current IT-related words.
NetLingo - Internet Dictionary containing a listing of Internet terminology.
Web Marketing - Web Marketing Resources- articles, courses, software and more.
MyFreeCopyright. Provides a third-party non-repudiation, registered dating of your original digital creation. By using this service, you publicly associate your digital copyright and defined rights to you.
Free system and file utilities by Alex Nolan
Internet Directory - The Studio 103 directory lists sites from across all corners of the web.
ImageMagick™ is a robust collection of tools and libraries to read, write, and manipulate an image in many image formats.
Conferences Open Source O'Reilly
hpHosts online!. This database has been created to allow simple, and quick confirmation of a site's listing in the hpHosts HOSTS file. hpHosts is a community managed and maintained hosts file that allows an additional layer of protection against access to ad, tracking and malicious websites.
| Initiatives for a Free and Open Web |
The fight for an open Web, there are many challenges. One of the big challenges that is not often heard involves licensing technologies. As Open Web Advocate Chris Messina explains, to allow websites to communicate with one another in the same language and in a consistent way, open Web developers need to be able to access other people's patents without getting sued. Messina works with the Open Web Foundation, which is in support of this idea. The challenge is getting both large and small companies on board with this concept. He goes on to say that it takes a lot of work in order to produce something that will eventually be free for everyone. Save the Internet. Net Neutrality The Freedom of the Internet is at stake. Watch and Read NOW!! It's YOUR FREEDOM they my stop. |
|
Skipfish (from Google) is an active web application security reconnaissance tool. It prepares an interactive sitemap for the targeted site by carrying out a recursive crawl and dictionary-based probes. The resulting map is then annotated with the output from a number of active (but hopefully non-disruptive) security checks. The final report generated by the tool is meant to serve as a foundation for professional web application security assessments. SkipFish Documentation.A fully automated, active web application security reconnaissance tool. Key features:
The tool is believed to support Linux, FreeBSD, MacOS X, and Windows (Cygwin) environments. Support the open source community by providing a scalable, reliable, and fast collaborative development environment for open source software, docs, and standards that promotes best practices in open source software engineering." |
SkipFish Security Report example :- | |
![]() |
Webmaster Resources Directory - The directory of useful webmaster resources.
Web Developer's Virtual Library Selectorweb Virtualdr
Rukhnet Online Web Directory Internet Web Directory organized by category, offers content rich and well designed web sites. Submit URL and have your site listed within the Rukhnet Web Directory.
Andilinks. Some handy links. AndiLinks Web Building Software
Also view our Page Rank, Website Review/Ratings section and the Web site promotion and traffic boosting section.
A visual look at the internet Visualisation of how Search Engines and Keywords link together. Traffic Maps, Keyword Links, search engine partnerships.
Database of Web Robots, Overview see Methods of Internet adverting for more information about robots.
Robots tracking and statistics Internet Search Engine Database PC voyager
Document Object Model (DOM), ( Wikipedia), is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents. Aspects of the DOM (such as its "Elements") may be addressed and manipulated within the syntax of the programming language in use. The public interface of a DOM is specified in its Application Programming Interface (API).
Another List From A Research Guide for Students
ASDL guide (Asymmetric Digital Subscriber Line)
Link-Pimp Link Directory Add your link to the Link-Pimp Link Directory, human-edited and categorized Link Directory.
1000 Things Useful information at your fingertips.
Valid Web Designs was created to explain and teach.
Web Design Script Archive Webmaster Engine Webmaster Resources Directory
Jaan Kanellis Search Marketing Blog Rants and Raves about the Search Marketing World from Toledo, Ohio. More Blog links
Home Based Business Services - Offering Home Based Businesses, Internet Success Tools, and Affiliate programs. Targeting services in Internet Marketing and Website Positioning to increase traffic.
Dave Beckett's Resource Description Framework (RDF) Resource GuideThe Global Grid Forum (GGF) is a community-initiated forum of thousands of individuals from industry and research leading the global standardization effort for grid computing. GGF's primary objectives are to promote and support the development, deployment, and implementation of Grid technologies and applications via the creation and documentation of "best practices" - technical specifications, user experiences, and implementation guidelines.
Language Negotiation. Notes Some notes about the negotiation of natural language on the WWW.
Pinging A 'Ping' is a basic Internet program that lets you verify that a particular Internet address exists and can accept requests. The verb ping means the act of using the ping utility or command. from My Page Rank
Free-Webmaster-Tools is a collection of quality tools for Webmasters, over 1400 Directory resources for your web development needs, and insight full articles/tips. Don't forget to check out our on-site webmaster tools and resources. Our content is updated on a weekly basis.
DownTester allows you to easily test your Internet download speed in multiple locations around the world. It automatically test the download speed of the URLs that you choose, one after another. It moves to the next download URL after the specified number of seconds has been elapsed or after it downloads the specified amount of KB - just according to your preferences. After the download test is finished, you can easily save the result into text/html/xml/csv file, or copy it to the clipboard and paste it into Excel and other applications.
SEO Cloaking Checker detects whether a Web site uses "cloaking," a server technique that some sites utilize to try to fool the search engines into awarding rankings the Web pages do not deserve. More about why you should not Cloak a Web site
Apache open-source software and Apache Servers. Mod Rewrite.
Linux and Unix Operating Systems.
Patents: Commission proposes rules for inventions using software
LSP-Fix Repairs Winsock 2 settings, caused by buggy or improperly-removed Internet software, that result in loss of Internet access
Nerd Tests at you a Nerd or a Geek, test yourself and Jokes etc....
Software QA and Testing Resource Center
Check out your site in different screen sizes and/or Check out your site in different screen sizes
Design Tip: Test Your Site With WebTV
Strider Search Defender: Automatic and Systematic Discovery of Search Spammers through Non-Content Analysis. Microsoft Research Strider Team, in collaboration with UCD. Technical Report: MSR-TR-2006-97. Created on May 9, 2006; Last Updated: July 12, 2006. Search engine spamming (or search spamming or web spamming refers to the practice of using questionable Search Engine Optimization (SEO) techniques to improve the ranking of a website in search engine listings. Comment spamming (or blog spamming) is a form of search spamming in which random comments, promoting links to commercial services, are automatically posted to publicly-accessible forums, guest books, blogs, message boards, etc. See sample screenshots of URLs hosted being spammed at many open forums. There are now several commercial programs that automate such spamming tasks.
Also consider :-Operating Systems and Graphical User Interfaces. Windows Visa/XP, Linux, Apple, BeOS, etc.
|
Web2FTP, access any FTP account through a Web interface - no matter whether there is a firewall or not. You can use Web2FTP for the complete administration of your homepage, downloading files or just making small changes. |
|||||||
Is down for everyone or just me? Display whether or not a URL is live.
Web Content Accessibility Guidelines 2.0 (WCAG 2.0) covers a wide range of issues and recommendations for making Web content more accessible. This document contains principles, guidelines, and success criteria that define and explain the requirements for making Web-based information and applications accessible. "Accessible" means usable to a wide range of people with disabilities, including blindness and low vision, deafness and hearing loss, learning difficulties, cognitive limitations, limited movement, speech difficulties, photosensitivity and combinations of these. Following these guidelines will also make your Web content more accessible to the vast majority of users, including older users. It will also enable people to access Web content using many different devices - including a wide variety of assistive technologies.
The Platform for Privacy Preferences Project (P3P) enables Websites to express their privacy practices in a standard format that can be retrieved automatically and interpreted easily by user agents. P3P user agents will allow users to be informed of site practices (in both machine- and human-readable formats) and to automate decision-making based on these practices when appropriate. Thus users need not read the privacy policies at every site they visit. Have a look at the list of P3P software. PSP is a W3C standard for creating machine-readable privacy policies. The standard allows a website to create an XML version of its privacy policy so that it can be evaluated automatically against an individual's privacy preferences.
OpenID eliminates the need for multiple usernames across different websites, simplifying your online experience. Also view Protect your Password for more Password Tools.
P3P Toolbox is a one-stop resource developed by the Internet Education Foundation in cooperation with the World Wide Web Consortium and a coalition of Internet industry leaders and public interest organizations to provide privacy officers and Webmasters with the information they need to make their Web sites P3P compliant. The site is no longer active and is being hosted here by Internet Education Foundation for archival purposes.
Internet Developers Toolbox. (Web Wise Wizard)
PrivacyFinder is a privacy-enhanced search engine. Once you state your privacy preferences (low, medium, high, or custom), the search results are ordered based on how their computer-readable privacy policies comply with your preferences. A red bird indicates that the site has conflicts with your preferences while a green bird indicates compliance. The absence of any bird means that a valid computer-readable privacy policy, known as a The Platform for Privacy Preferences Project (P3P) policy, could not be located.
Webby People's Voice voting site, where you can voice your opinions on the best of the Net. Vote for your favorites from five nominees in Web and Mobile Sites, Interactive Advertising and Online Film & Video.
Eggheaven2000. Computer Easter Eggs - what are these? Unlike tradition Easter eggs, these Easter eggs, also known as gang screens or computer eggs, are hidden functions and novelties contained within programs that developers put in for you to find and enjoy. These can consist of anything from pop-up joke screens, animations, to elaborate built in supplement games. Some of these can be quite substantial in scope, whilst most though are quite small.
Internet Information Services 7.0 (IIS7) in Windows Vista
Access FrontPage Cover Microsoft FrontPage 97, FP98, FP2000, FP2002, FP2003 and FPE (FrontPage Express) and incorporate Tips, Tutorials, How-to's, Faqs and Help.
Website Development Company: Offshore software development company providing custom software development and web application development solutions across the globe.
HEX to BIN to DEC Calculator Handy for programmers who need to convert. SubnetOnline Your online IP subnet calculator and network tools collection..." More Programming Languages and Computer Code and Scripting
Knowthenet. Currently, internet users are faced with a wide range of disparate educational resources that deal with a broad range of topics that they may face when starting out on their personal or business journey on the internet. Knowthenet has been provided by Nominet as a central access point to help signpost these users to where to find relevant and useful information that enables them to have a safe and beneficial experience on the internet. Take the ThreatTest and see how well you can spot a scam .The test has four sections, takes just a few minutes to complete and will give you advice and guidance after each stage. More links abou Scams and hoaxes. Fraud warnings. Virus Attacks
| Repper Tutorial (Create patterns and seamless tiled backgrounds, etc...) | ||
| Repper Tool | ||
Web Site colour information at Graphics, Graphics file formats and Images
Valuate Discover how much your domains worth. This instant valuation service will help you get fair domain appraisals based on your names metrics and the sales of similar domains. Who is Tools. DNS Tools, Domain Name System Tools. Domain Names for sale. Sell your Domain Names
The Guild of Accessible Web Designers (GAWDS) is a worldwide association of professional organisations, web designers and developers working together to promote the use and preservation of accessible design standards. Promoting a vision of the future that assumes accessible web design to be, relevant, obtainable, and not at odds with successful business practice or good visual and usable design." (This is provided for information: The A Great Portal Collection of Websites by DOT Solutions. is not a member of The Guild of Accessible Web Designers (GAWDS) .
Web Accessibility Initiative (WAI) Develops strategies, guidelines, and resources to help make the Web accessible to people with disabilities. The following WAI resources are intended to provide basic information for people who are new to Web accessibility. (This is provided for information:)
It is a legal requirement for your organisation's website and intranet to comply with the Disability Discrimination Act (DDA). But perhaps more importantly, it makes good business sense to ensure all your customers can access your goods and services. It is estimated that 10 million adults in the UK have a disability and the combined spending power of disabled adults is 80 billion annually. Also read Webmaster Laws
Freenet is free software which lets you anonymously share files, browse and publish "freesites" (web sites accessible only through Freenet) and chat on forums, without fear of censorship. Freenet is decentralised to make it less vulnerable to attack, and if used in "darknet" mode, where users only connect to their friends, is very difficult to detect.
The Windows Azure Platform is an internet-scale cloud computing and services platform hosted in Microsoft data centers. The Windows Azure Platform provides a range of functionality to build applications that span from consumer web to enterprise scenarios and includes a cloud operating system and a set of developer services. Fully interoperable through the support of industry standards and web protocols such as REST and SOAP, you can use the Azure services individually or together, either to build new applications or to extend existing ones. What is the Windows Azure Platform? Windows Azure Platform Training Kit includes a set of technical content including hands-on labs, presentations, and demos that are designed to help you learn how to use the Windows Azure platform including: Windows Azure, SQL Azure and .NET Services.
Cloud Computing is a somewhat nebulous word to describe that modern users will "rent" or borrow online software instead of actually purchasing and installing it on their home computers. It is the exact same idea as people using Gmail or Hotmail services, except that cloud computing goes much further than simple email. Cloud computing is where entire businesses and thousands of employees will run their computer tools as online rented products. All of the processing work and file saving will be done "in the cloud" of the Internet, and the users will plug into that cloud every day to do their computer work. It is said that Could Computer suppliers buy computer systems by the container load. This help reduce cost because of Economies of scale. Software as a Service (aka "Saas" or "SaS"). Platform as a Service (aka "PaaS" or "PaS") . Software and Platform.
Cloud Security Frame. Cloud Security Frame at Shaping Software. This frame is especially important because we're using it to help us map out the Cloud security space for our patterns & practices Cloud Security Guidance project. it's helps us scope our project. The frame is basically a set of Hot Spots. We use the Hot Spots to find, organize, and share principles, patterns, and practices. We also use the Hot Spots to find pain points and opportunity or to organize key engineering decisions.
Windows Azure platform is a set of cloud computing services. It provides a scalable environment with compute, storage, hosting, and management capabilities. It links to on-premises applications with secure connectivity, messaging, and identity management.
Cloud Computing. Cloud links, About the Cloud.
58 Freebies PSD Web Button Packs. Now days a full CSS button can be great, but in case you want some other button appearance for your web project, maybe this some freebies button pack can be one of your inspiration.
|
This tool will analyze a given web page and return a table of data containing columns of outbound links and their associated anchor text. If a hyperlink is represented by an image, the image's alt attribute will be included as the anchor text. What are outbound links? Outbound links are simply hyperlinks which point to another web page. In fact they are simply regular hyperlinks. What is anchor text? Anchor text is the text used to display a link. |
|||||||||||||||||
Communications and Internet Services Adjudication Scheme, (UK), CISAS is an Ofcom, (Ofcom The independent regulator and competition authority for the UK communications industries), approved redress scheme which individuals and small businesses (customers) can use to settle disputes with communications companies, such as mobile and home phone companies or internet service providers, which are scheme members. You need to be a customer of a member company to be able to use CISAS. For a full list of companies that are members of CISAS, please click here.
Benefit from IT Web and PC design and development.
Alphabet of Web Business. A to Z. When you are up to your elbows in running a business, it can often be easy to overlook some of the strategies or ideas we should be considering every once in a while.Forums. Computing Forums. Webmaster Forums, Programming Forums
Hosting Question you should ask
Cloud Computing. Cloud links, About the Cloud.
Apache open-source software and Apache Servers. Mod Rewrite.
.htaccess Files and .htaccess Help. How use to .htaccess
CRON scheduler running of programs. CRONTABS
Search engines. Online Dictionary, Thesaurus. Acronym or abbreviation finder, etc..
Scams and hoaxes. Fraud warnings. Virus Attacks
Diagnostics and Security (Phishing information)
Backup/File Compression Data Recovery
Protect your Usernames and passwords. Protect your system
Disaster Recovery Planning. (Also Undelete Files) So how good is your Disaster Recovery Planning?
Anti-Virus Software Tools & Utilities
Top websites. Domains Top Address. Find or sell domain names. Want to sell a Domain Name? Want to make money from a unused domain name you own? Only pay on a sale. Need to find a domain name for your business? Search now!
A Science Portal. Ideal for Science Projects. Links to cutting edge science related web sites. Cutting edge science. Research and breakthroughs using State of the Art and discovery's of new sciences, physics, cosmology, the Universe, power sources, control units, memory devices, displays, portable computers, nanotechnology, organic, biological, medical, neurology, mobile, portable, WAP, G3, electronic, etc. Earth science, engineering and bandwidth solutions. Robotics, gadgets, chemical and telecommunications. Social, psychology and politics. A look at the future?
Web site promotion and traffic boosting Big list of Submission sites
DOT Solutions. Digitally Orientated Technologies bring you Targeted Traffic for your site. Helping people and smaller businesses increase their brand image. Using low budget methods. Able to provide step by step WAP (mobile phone) and WEB advertising solutions. This method is ideal for people or businesses with smaller budgets.
Advertise on A Great Portal. Paid Inclusion Targeted Traffic Listing lots of Targeted Searchable Keywords and Static Page links. Sponsored searchable links: Specific links relating to the subject matter of the site. Your details will be displayed and users will be able to search on Keywords in the Title, icons, description, specialties, extra keywords, contact details and URL you provide. We will provide you with Lots of Searchable Keywords plus Static Page links. Individually targeted for Employment, Business, Science and Technology, Computing both hardware and software Entertainment or Sport. More Website promotion. Internet advertising. DOT Solutions. Digitally Orientated Technologies. Helping people and smaller businesses increase their brand image. Low budget providers of Web & WAP (Wireless Applications Protocol) solutions. Methods of Internet adverting free tips.
Web Masters. Click Here Now to start making money. A Great opportunity to make some money. Receive 50% by offering your users Ton's of Keywords on A Great Portal websites. Our Affiliate Program Pays you 50% on Level 1 of Every Sale of our Text Link both searchable and static Text Link!
Compare Bargains. Discounts and special offers. Compare Bargains Domain Name for Sale, URL, for Sale. http://www.comparebargains.com A domain name to make money from.
A Computer Portal. Freeware, Shareware. Download software. Computer languages and Programming code. Including PERL Scripts and Java Scripts. Webmaster Tools. Internet Marketing, Website promotion. Hardware Help from BIOS to Windows and UNIX.
® © ™ are owned by respective authors and websites. There may be a charge for some software. Google™ is a trademark of Google Inc, These pages are not endorsed by Google or any other Company. Always perform an Anti-Virus Check on any Software