Date: 11 Feb 2004 20:02:59 PST From: "Lockergnome" <list_admin@lockergnome.com> To: questions@freebsd.org Subject: Web Developers - Happy Hearts And HDTV! - Lockergnome Message-ID: <20040212041518.1968D43D1D@mx1.FreeBSD.org>
next in thread | raw e-mail | index | archive | help
[1]Lockergnome Web Developers [2]Go to Lockergnome February 11, 2004 - Happy Hearts And HDTV! INSIDE THIS ISSUE CLICKS - [3]GnomeREPORT: Happy Hearts And HDTV! - [4]PROJECT: Data Dumping - [5]FEATURE: Develop Rock-Solid Code In PHP: Part One - [6]WARE: Shopping Squirrels - [7]FAVORITE: GuruNet - [8]TALK: More MYSQL Managers - [9]Read this issue online - [10]Get the RSS feed for this channel [11]Syndicate this Channel [12]FeedDemon [13]PentaSuite [14]GuruNet [15][thawte_small.gif] Get Thawte's New Step-by-Step SSL Guide for MSIIS - In this guide, you will find out how to test, purchase, install and use a Thawte Digital Certificate on your MSIIS Web server. Throughout, best practices for set-up are highlighted to help you ensure efficient ongoing management of your encryption keys and digital certificates. [16]Get your copy of this new guide now. GnomeREPORT: Happy Hearts And HDTV! Hey, all! Don't forget this Saturday is Valentine's Day. Be sure to grab your sweetie something nice and, if you can, stay away from the computer! If you're like me, that is probably one of the best presents you can give! My grandmother is coming to visit the family for these two weeks. Her birthday is on Valentine's Day, and with mine the following week, I'm sure we'll be busy little bees. So if you have content you've been holding back now would be a supreme time to [17]send them to me or the LG staff. In preparation for my birthday, my wife was kind enough to take me to Best Buy and let me run wild through the aisle and make purchases we could probably live without. So we ended up with a new desk (much smaller one than my previous one), a new TV (I LOVE HDTV!), a new VCR to go with the new TV, and a nice small 15" LCD Monitor for her computer (ViewSonic VA520-2). So needless to say I'm in electronic heaven. It's amazing what a new TV will do for your perspective on things! I find myself watching shows I'd never watch but the colors are so intense and amazing I just get lost in the signal. I haven't hooked up my PS2 to it yet but I'm sure I'll be just as blown away as I was with my DVDs. I heard somewhere I can get component video cables for my PS2 - I'll have to look into that one. Digitally Yours, Eric Jones [18][Back to Top] PROJECT: Data Dumping Okay, [19]last week we talked about functions that would pull our data out of our database and display it for everyone to gawk at. As we all know, getting data from a database is only half the problem. The other part comes from putting data into the database, thereby creating a circular effect of data in and data out. First let us create our functions. To keep things short I'm only going to highlight a function for adding an article and let you figure out how to create one for adding authors to our system. First, the complete code without any comments. Then I'll break it down below. <? function insert_article( $author_id, $title, $synopsis, $body){ $sql = "insert into articles (author_id, title, synopsis, body) VALUES ('$author_id', '$title', '$synopsis', '$body')" ; $result = dbQuery( $sql); if( $result){ return "OK"; }else{ return "FAIL"; } } ?> Now for a little talking from yours, truly. This first line should look familiar by now, with the only difference being the number of variables which this function takes. As you can see from below, we take in 4 variables so we must remember that whenever we invoke this function that it takes 4 variables. function insert_article($author_id, $title, $synopsis, $body){ This is our SQL query. Here we use an insert statement to tell MySQL we want to insert the following values into their respective columns. The format here is pretty simple to understand. In the first parentheses we have the column names which are exactly like the column names in our articles table. Next you see the word VALUES in all caps and a bunch of PHP variables in another set of parentheses. These are the values which are going to be passed from our page (which is created yet) to the function to the SQL and into the database. $sql = "insert into articles (author_id, title, synopsis, body) VALUES ('$author_id', '$title', '$synopsis', '$body')"; Here is a trusty result variable which is passing the $sql data to the dbQuery function for execution. If all goes okay, then we should get a true returned. $result = dbQuery($sql); Here we check to ensure that $result is true. If it is, then we tell our function to return the text okay, if it's false then the function will return FAIL. I prefer to use OK and FAIL versus TRUE / FALSE or 1 / 0 because it shows I'm passing a string, and not a Boolean. Now you could just do a return $result and then check the true / false on your calling page. It's all a matter of preference. if($result){ return "OK"; }else{ return "FAIL"; } So there you have it. We've got a function which will take data and put it into a database. Now let's work on the form. Since we all know HTML here I'm just going to show you my form and put comments in for my logic, etc. Grab the HTML file here and the functions file here. Well that's it for this week. Go forth and expand on it. Next week we will play more with outputting the data into HTML for viewing, etc. [20]Let me know if you have questions. [21][Back to Top] FEATURE: Develop Rock-Solid Code In PHP: Part One Zend recently started a series about building rock solid code in PHP. Below is the first part. I recommend you read it all, but if you want to jump to my favorite part, then [22]go here and read about rock solid functions. Intended audience This is the first in a series of articles intended for developers who are interested in building medium-to-large PHP based Web applications. The Develop Rock-Solid Code In PHP series is about solving practical, real-life problems. In this series you'll learn how to rise above making quick-and-messy solutions, and to develop code that you can reuse later in other applications. This first article will give you a higher level perspective - a bird's-eye view on what factors make good a Web application. Introduction If you are developing Web Applications and need speed, functionality, and platform-independence, PHP is a natural choice. Moreover it's free, and easy to learn and deploy. These are the strengths that make PHP so popular. But these same strengths can turn into weaknesses if you're not careful. Because of PHP's ease-of-use, developers often get tempted to hammer code straight into their editors when they should really begin with planning and design. Also, there is always more than one way of solving problems in PHP. Having more than one way to do things is good, but it increases the risk of making mistakes that will be difficult to fix later. In this series of articles you'll learn how to avoid these mistakes. If you follow through religiously, don't be surprised to find yourself writing bug-free code at the first or the second go. I'll also point out new features available in PHP 4 that make life easier. Most of the examples that we will cover as we move along deal with practical real-life problems like script configuration and setup, file-handling, using databases and caching elegantly. Even if you are new to all this, you should get along well. For now, I will assume only that you know elementary PHP. Build a rock-solid foundation Coding in PHP is very much like coding in a language like C; their syntax is similar. This means that it's easy to get yourself into maintaining your own mess just like in C. When large scale applications have to be coded, you have huge amounts of code to pay attention to. Needless to say, this makes code hard to manage and bugs tend to creep in. Well actually this is part of the truth, the bigger truth is that if you are maintaining your code too often, your application was probably not designed right in the first place. The choices that you make initially affect your degrees of freedom when you code later. This makes proper design an important prerequisite. Design is sometimes seen as an unwanted extra ceremony when you are solving a trivial problem, you must at least acknowledge that this is the case. Many people think of design and planning as extra overhead. But starting with a bad design - or no design at all - always results in slip-shod code. No amount of clever coding can compensate for bad design. Although how to design is very application specific and is beyond the scope of this series of articles. However I will suggest some pointers that you can use when designing Web applications. Divide and conquer How do you eat an elephant? The thought sounds gruesome, but the answer pertains to almost all programming problems. It is always preferable to design and code a big application in smaller, loosely coupled parts. That way, each part stays maintainable. For example, a Content Management System (CMS) may be distributed over many smaller modules like user authentication, presentation, content parsing, and viewing statistics. You should aim for making these modules generic enough that you can reuse your code in other applications that you develop. Well, programmers often do this and still complain. Let's go along with the elephant analogy. If the elephant's mouth sends bananas down the windpipe into the lungs instead of the stomach via the food-pipe, the animal will obviously get sick and throw-up. The trick is to let each module have the functionality it absolutely needs and stop there. Do nothing more and nothing less. Adding functionality that's not needed results in data traveling in pipes that run awry. You know the rest. Never think in pages If you took interest in PHP just to make your HTML pages more dynamic, this bit is for you. This habit generally starts when you want the date and time displayed on every page to make it look fresh. Every HTML page turns into a small PHP script with a skimpy line with the date function tucked-in somewhere. If this is what you want, I must agree that this is the simplest way of getting the job done. But just imagine what you will have to do to change the format of the date that appears on the page. You will have to change the code in every page! There are obviously better ways to do this. My favorite is to use a configuration file and define a constant in it that holds the format string for the date() function. You can then use the date() function wherever you need it. Every page will still end in a script, but you will have drastically minimized places where you must make a change to a single line of code. I agree that this example sounds a bit too trivial, but remember the saying "Take care of the pennies and the pounds will take care of themselves." Reduce client-side requirements The types of Web pages and applications have grown in many directions. First it was image and image-maps, then Java applets and client-side scripts that did cool animations. Today it is Flash. It is good to have impact, but one must remember the whole idea behind the Web is to make information accessible to anyone who wants it at any time. By employing technology that not all browsers and platforms support, you deny information to people. Remember that the primary purpose of any Web application is to deliver information and remain available at all times. You never know; the person who couldn't access your application may have been your next customer! Your application design should minimize network traffic as much as possible. It is common to see sites that go over-the-top and give browsers an assortment of cookies just to work. Juggling a lot of cookies not only consumes bandwidth, but also makes things difficult to manage. As a rule of thumb, if your application sends more than 40 KB of data or if your page requires more than 5 seconds to load, it is time to take the application back to the drawing board. Small tweaks here and there do not last for long. If you look around, the most popular and the most visited sites are very simple. You should also take into account the next wave of mobile devices and the connection they will use to access your application. As a best practice, your application should tailor content to the client that requests it. Separate code, content and presentation HTML is a markup language to present content; PHP is an HTML-embedded scripting language. This does make simple tasks easy, as demonstrated in the date example above. However, when you have complex requirements to implement, embedding PHP in HTML takes away simplicity from the code. Simplicity should be the first flag you'll need to capture if you are making a large application. Separating code, content, and presentation may sound laborious, but it brings simplicity back into the code. Just as encapsulating core functionality in modules and avoiding code duplication is important, using a single source for content and presenting the content the way it is wanted on demand is also important. Your flexibility to tailor pages according to the client and connection speeds is increased. Another spin-off is that programmers, designers, and writers work independently of each other, which is a good thing if you are handling a large project. Don't be afraid to scrap designs No matter what anyone tells you, application design is best learned by practice. If you are just getting started, you may make many mistakes - that's how you learn. Bad designs deserve to be scrapped. That is why you must keep code, content, and presentation loosely coupled: scrapping bad application architectures and designs becomes less painful. You can keep the content and the presentation while losing your older code to something better. [23]See the rest of the articles here. [24][Back to Top] WARE: Shopping Squirrels As I mentioned in the past, I'm working on a Web site for my [25]mother-in-law. She wants to sell her Peanut Patties, Pecan Praline Patties, and BBQ Walnuts online. Having sampled the candies, I of course jumped at the request to build the site for her. Well while planning the site I knew we need to get real-time shipping quotes so she would know how much to charge for shipping to various US locations. So I fiddled around with creating my own scripts to do this and just found it to be too much on my limited time budget. So I set out to find a nice shopping cart program which would do it for me, among other things. Well while surfing one of those Web sites with all the scripts on them I came across [26]Squirrelcart. Upon first look I was super impressed because it did both UPS and US Postal rates! This is perfect for her, since she lives in a small town with limited options for shipping. Besides being well equipped in the shipping category, it has a multitude of support for various merchant accounts, including [27]PayPal and [28]2Checkout. Both of these systems are very low cost to get into and help you to establish a merchant type account quickly and easily. Of course if you are doing a steady volume of sales you'll need to get a real account to get the best savings, but I digress. The cart itself was very easy to install and even easier to get things set up. The administrator interface is awesome and very clean, kind of a Windows XP / Mac feel to it. Also the documentation and support systems they have in place are stellar as well. I had a few questions about the Paypal IPN service (which isn't in place 100% yet) and posted my support ticket with their system. 18 hours later I had a response and suggestion for following the issue! They also have a great community forum for those who require a wider range of replies. So if you have a PHP / MySQL server and are in need of a great shopping cart, I have to recommend [29]Squirrelcart. With a price tag of only $109, it's an easy pick for most budgets. If you need more data before you make the purchase plunge, then [30]jump over here to see the current feature list. [31][Back to Top] FAVORITE: GuruNet By [32]Matt Hartley [33]http://www.gurunet.com/ I find that within any given day I do a great deal of my work on the Web. Tracking down the latest technology related events, seeing what is happening in the news and even scouring around on Google trying to locate the latest hardware drivers for my clients. Using Google for these tasks has been the "standard" for some time now. The only problem is that it can be a real pain to scour through a ton of "stuff" when you already know what it is you are looking for. The folks at GuruNet have a very useful and viable solution for those of us that need to "get a question answered" or do some research on a specific subject. Actually it is a lot like having your own little expert on everything right there in your system tray. So what the GuruNet software do for you? * Alt-Click on any word/phrase - GuruNet provides "instant answers" to just about anything you ask it. In an e-mail, Web page, or a document you might find a word that is completely foreign to you. So you do an Alt-Click with your mouse and BAM you have the definition of that word right at your fingertips. * Contextual recognition - GuruNet uses surrounding words to help it find the information that you need when making a query. Spell checking is handled automatically while quickly offering you alternatives in the "did you mean?" tab provided in the program. * Authoritative data sources - GuruNet provides all content "garbage free" so that you can get your work done without the distractions of irrelevant sites that might draw attention elsewhere. This is all great and everything, but is this software right for me? Fair enough. This software is perfect if you are: * A Teacher * A Student * A Professional * A Newspaper reporter * Doing research for a law firm * Anyone needing the ability to find information that they can offer to clients/readers/co-workers as FACT Searches that GuruNet excels in include: * Nutritional values * History * Important events * Laws (Specific court cases, specific laws, etc.) * Sports history/trivia (settle bets without starting a bar brawl, prove that you are the master of sports trivia) * Medical reference (Diseases, medications, treatments, etc.) GuruNet is not by any means here to replace your favorite search engine. Rather, it is designed to help focus your search to only the most relevant information that has been PROVEN to meet the needs of your query. Google is an awesome search engine, but when you need to scour encyclopedias, dictionaries, and other content providers proven to be accurate with no "maybe it's correct" information... GuruNet is the logical choice. So whether you have kids in school or you simply want to have access to accurate, up-to-date information that you can offer as concrete FACT without those "I hope this Web site's information is correct" jitters, GuruNet is truly a must have product. I am quite impressed and look forward to seeing what advancements they offer as this software continues to mature and grow. [34][Back to Top] TALK: More MYSQL Managers Gnomie Kevin had this to say about a great free MySQL Manager: I'm really enjoying the project - keep up the great work! I just read the latest issue and your feature about MySQL Manager. The company I work for recently started using MySQL for our clients' databases and I was put in charge of finding a good, low cost (read "free") management tool. I, of course, turned to WebAttack and found MySQL-Front listed, but they said that the developer had stopped updating. Undaunted, I checked out the Web site of the developer ([35]http://www.mysqlfront.de) and found that the project is very much alive. I downloaded version 2.5 for work as it is the latest "stable" version and I love it. I have since downloaded version 3 for personal use and I have to say that I can't recommend it highly enough. The interface is intuitive -- especially if you're used to using MS-SQL Enterprise Manager - and full-featured. Being used to Enterprise Manager, the one thing that I have had the most trouble getting used to is the fact that data imports are accomplished via SQL statements, although I must say that now that I have gotten used to this I do like it and find myself having trouble going back to Enterprise Manager at times. Just thought I'd let you know about this great cheap tool (It's only $25 in case you didn't know about it already). Again, keep up the great work on the newsletter, and thank you. And those of you who are working on projects which are paid or billed by the hour, Gnomie Rick suggests you check out [36]The Project Timer. From their Web site: Project Timer Pro has been designed especially for time tracking, so you simply start a 'Timer' when you start work and stop the 'Timer' when you finish. If you need to take a break and leave the computer, Project Timer Pro automatically knows and can pause the 'Timer' with a variety of options. On the Mac OS Project Timer Pro can even tell if your computer has been asleep, for example if you are working on a train and reach your stop, you just send the computer to sleep and, when it awakes, Project Timer Pro allows you to enter the time the computer was asleep as a Pause. And finally Gnomie Pat (aka Vinyl-junkie) had these recommendations for database conversion tools. Vinyl-junkie here from the Lockergnome forums. If you'll recall, in a recent newsletter you mentioned a post of mine to the Webmasters forum, where I was looking for some pointers on converting an MS Access database to MySQL and converting the accompanying code to PHP. I thought you might be interested to know that I'm well on my way to doing just that. (You were right about recommending Kevin Yank's book, too; it's been a great resource in that effort). I also wanted to share with you a couple of terrific database conversion tools I found. Perhaps you'd like to include this in a future newsletter: Access-to-MySQL, by Intelligent Converters - 2000/XP/NT4 $39.85 [37]http://www.convert-in.com/acc2sql.htm [Convert MS Access databases to MySQL] Access-to-MySQL is one of the easiest tools you'll find for converting your Microsoft Access databases to MySQL. It comes in several packages, like the Standard Edition, which converts a single database and the Professional Edition, which provides bulk database conversion. There is also a choice of bundles that provide, for example, conversion between Access and MySQL and back, plus similar tools for conversion between Excel and MySQL. Check their Web site for more details. The user interface is simple and straightforward, providing capability of logging onto the MySQL server remotely to upload your converted database directly to the server. If your Web host doesn't allow remote server logon, or you'd just like more control over the conversion process, select the option which creates a dump file. That file contains all the SQL insert statements necessary to populate your MySQL database. Then you simply logon to the MySQL server and, using a tool like PHPMyAdmin, select your dump file for processing. In a matter of minutes, you will have created your MySQL database. The only limitation I've found - and this is not directly related to the use of Access-to-MySQL - is that if your MS Access tables contain more than about 6,000 records, you'll have to split your dump file into smaller chunks for processing. Otherwise, the MySQL server will choke. That's a limitation I can live with though, considering how easy this software is to use. CSV-Importer - Free [38]http://codewalkers.com/seecode/175.html [Convert a CSV (comma separated values) file to MySQL] The other conversion tool that I found which seems to work pretty well is CSV Importer. As you know, MS Access has a built-in tool that will export all your tables to CSV files. Beyond that, all you need to do is unzip this file, upload the appropriate files to the Web server and follow the on-screen instructions. Note that your database and required tables must already exist on the server in order for this software to work. This software is just as easy to use as Access-to-MySQL, but suffers the same limitation - that of restricting the conversion to no more than about 6,000 records at a time. It also has a small bug whereby timestamp fields are not properly converted. You can easily get around this problem though by executing a SQL command on the server with the following format: ALTER TABLE 'table-name' CHANGE 'field-name' 'field-name' DATETIME; For example, I have a timestamp field called LastUpdateByUser in a table called tblTracks, so my command would look like: ALTER TABLE `tblTracks` CHANGE `LastUpdateByUser` `LastUpdateByUser` DATETIME; No matter which database conversion tool you use though, you'll find that it's not as difficult to do as you might think. Thanks, Guys! [39][Back to Top] [40]http://channels.lockergnome.com/web/backissues/20040211.phtml Your subscribed e-mail address is questions@freebsd.org - To unsubscribe or change your delivery address, please visit the [41]subscription management page. © 1996-2004, Lockergnome LLC. ISSN: 1095-3965. All Rights Reserved. Please read our [42]Privacy Policy and [43]Terms of Service. Web site hosted by [44]Webair. Email newsletters powered by [45]WhatCounts. Domain registered at [46]GnomeDOMAINS. The more we disagree, the more chance there is that at least one of us is correct. OUR CHANNELS: [47]Windows Fanatics [48]IT Professionals [49]Web Developers [50]Tech News Watch See our [51]Channels Overview for more information and RSS feeds. [sidebar-hr.gif] OUR NETWORK: [52]Lockergnome [53]RSS Resource [54]GnomeDomains [55]GnomePortable [56]GnomeSavings [57]GnomePersonals [58]GnomeJobs [59]File of the Day [60]Gnomedex OUR COMMUNITY: [61]Join the Forums [62]Chat with Gnomies [63]Watch the Webcams [64]Recommend Us OUR FORUMS: [65]Digicam Help [66]Apple Help [67]Gaming Help [68]Networking Help [69]Mobile Help [70]Programming Help [71]RSS Help [72]Windows Help [73]Linux Help [74]Internet Help [75]Hardware Help CONTACT US: [76]General Feedback [77]Contact Staff [78]Submit Your Link [79]Sponsorships [80]Ask a Question [81]The Editor's Blog [sidebar-hr.gif] LATEST TECH NEWS: [82]Unreal Tournament 2004 demo released [83]Microsoft Adds Juice to Removal Tool [84]Palm Powered PDA a Day [85]Video Game Mamas [86]Spike Lee's "Secret Agent Man" [87]Angry with RIAA tactics, programmer creates mask for file-sharers [88]What world-famous command did the first IBM PC manual omit? [89]Windows XP may take upward of three minutes to complete a wireless network connection [90]Stop error message on a blue screen when you transfer data to a USB device in Windows XP [91]Surfin' Safari [sidebar-hr.gif] LATEST RSS NEWS: [92]RSSgenr8 [93]Pluck [94]Windows XP Expert Zone Community Website [95]CompleteRSS [96]PV Comics [97]RSS = Rudely Syndicated Spam [98]RSSTop55 [99]What is RSS? [100]How to Create RSS [101]Barenaked Feeds [sidebar-hr.gif] FEATURED DOWNLOADS: [102]Image Converter Plus [103]Aaron's WebVacuum v2.3 [104]Auto FTP Manager [105]Transparent Screen Lock for Win2K/NT/XP [106]Library of the Ages v1.0 [107]Belltech Greeting Cards Designer v1.1 [108]AbroSoft FantaMorph [109]Winter Wonderlands [110]DownShift [111]FolderMatch [sidebar-hr.gif] [t?c=65641&r=16&l=4828&t=10&s=35342912] References 1. http://channels.lockergnome.com/web/ 2. http://www.lockergnome.com/ 3. file://localhost/tmp/tmppFSX-6.html#1 4. file://localhost/tmp/tmppFSX-6.html#2 5. file://localhost/tmp/tmppFSX-6.html#3 6. file://localhost/tmp/tmppFSX-6.html#4 7. file://localhost/tmp/tmppFSX-6.html#5 8. file://localhost/tmp/tmppFSX-6.html#6 9. http://channels.lockergnome.com/web/backissues/20040211.phtml 10. http://lockergnome.com/rss/web.php 11. http://lockergnome.com/rss/web.php 12. http://go.lockergnome.com/220 13. http://www.pentazip.com/ 14. http://www.gurunet.com/?afid=6206 15. http://go.lockergnome.com/257 16. http://go.lockergnome.com/257 17. http://lockergnome.com/contact/staff.phtml?r=8&s=[WDV] 18. file://localhost/tmp/tmppFSX-6.html#top 19. http://channels.lockergnome.com/web/backissues/20040204.phtml 20. http://lockergnome.com/contact/staff.phtml?r=8&s=[WDV] 21. file://localhost/tmp/tmppFSX-6.html#top 22. http://www.zend.com/zend/tut/tut-hatwar3.php 23. http://www.zend.com/zend/tut/tut-hatwar.php 24. file://localhost/tmp/tmppFSX-6.html#top 25. http://www.sweetsfromthesouth.com/ 26. http://www.squirrelcart.com/ 27. http://www.paypal.com/ 28. http://www.2checkout.com/ 29. http://www.squirrelcart.com/ 30. http://www.squirrelcart.com/features.php 31. file://localhost/tmp/tmppFSX-6.html#top 32. http://ctsdownloads.com/ 33. http://www.gurunet.com/?afid=6205 34. file://localhost/tmp/tmppFSX-6.html#top 35. http://www.mysqlfront.de/ 36. http://www.scriptsoftware.com/projecttimer/ 37. http://www.convert-in.com/acc2sql.htm 38. http://codewalkers.com/seecode/175.html 39. file://localhost/tmp/tmppFSX-6.html#top 40. http://channels.lockergnome.com/web/backissues/20040211.phtml 41. http://sub.lockergnome.com/ 42. http://lockergnome.com/about/privacy-policy.phtml 43. http://lockergnome.com/about/terms-of-service.phtml 44. http://www.webair.com/cgi-bin/in?51 45. http://www.whatcounts.com/ 46. https://www.gnomedomains.com/ 47. http://channels.lockergnome.com/windows/ 48. http://channels.lockergnome.com/it/ 49. http://channels.lockergnome.com/web/ 50. http://channels.lockergnome.com/news/ 51. http://lockergnome.com/channels/ 52. http://lockergnome.com/ 53. http://rss.lockergnome.com/ 54. https://gnomedomains.securenow.com/ 55. http://www.handango.com/brainstore/home.jsp?siteId=813 56. http://lockergnome.pricegrabber.com/ 57. http://personals.lockergnome.com/ 58. http://seeker.dice.com/seeker.epl?rel_code=14 59. http://windows.fileoftheday.com/ 60. http://www.gnomedex.com/ 61. http://help.lockergnome.com/ 62. http://lockergnome.com/community/chat.phtml 63. http://www.lockergnome.com/community/cams.phtml 64. http://lockergnome.com/contact/recommend.phtml 65. http://help.lockergnome.com/index.php?s=&act=SF&f=16 66. http://help.lockergnome.com/index.php?s=&act=SF&f=12 67. http://help.lockergnome.com/index.php?s=&act=SF&f=19 68. http://help.lockergnome.com/index.php?s=&act=SF&f=9 69. http://help.lockergnome.com/index.php?s=&act=SF&f=14 70. http://help.lockergnome.com/index.php?s=&act=SF&f=31 71. http://help.lockergnome.com/index.php?s=&act=SF&f=33 72. http://help.lockergnome.com/index.php?s=&act=SF&f=4 73. http://help.lockergnome.com/index.php?s=&act=SF&f=8 74. http://help.lockergnome.com/index.php?s=&act=SF&f=6 75. http://help.lockergnome.com/index.php?s=&act=SF&f=5 76. http://lockergnome.com/contact/ 77. http://lockergnome.com/contact/staff.phtml 78. http://lockergnome.com/contact/submissions.phtml 79. http://lockergnome.com/advertise/ 80. http://ask.pirillo.com/ 81. http://chris.pirillo.com/ 82. http://channels.lockergnome.com/news/archives/008931.phtml 83. http://channels.lockergnome.com/news/archives/008929.phtml 84. http://channels.lockergnome.com/news/archives/008927.phtml 85. http://channels.lockergnome.com/news/archives/008925.phtml 86. http://channels.lockergnome.com/news/archives/008924.phtml 87. http://channels.lockergnome.com/news/archives/008921.phtml 88. http://channels.lockergnome.com/news/archives/008920.phtml 89. http://channels.lockergnome.com/news/archives/008919.phtml 90. http://channels.lockergnome.com/news/archives/008918.phtml 91. http://channels.lockergnome.com/news/archives/008912.phtml 92. http://rss.lockergnome.com/archives/software/008932.phtml 93. http://rss.lockergnome.com/archives/software/008930.phtml 94. http://rss.lockergnome.com/archives/feeds/008928.phtml 95. http://rss.lockergnome.com/archives/services/008926.phtml 96. http://rss.lockergnome.com/archives/feeds/008923.phtml 97. http://rss.lockergnome.com/archives/news/008916.phtml 98. http://rss.lockergnome.com/archives/help/008915.phtml 99. http://rss.lockergnome.com/archives/help/008913.phtml 100. http://rss.lockergnome.com/archives/software/008903.phtml 101. http://rss.lockergnome.com/archives/feeds/008902.phtml 102. http://windows.fileoftheday.com/archives/008914.html 103. http://windows.fileoftheday.com/archives/008896.html 104. http://windows.fileoftheday.com/archives/008875.html 105. http://windows.fileoftheday.com/archives/008852.html 106. http://windows.fileoftheday.com/archives/008830.html 107. http://windows.fileoftheday.com/archives/008819.html 108. http://windows.fileoftheday.com/archives/008779.html 109. http://windows.fileoftheday.com/archives/008766.html 110. http://windows.fileoftheday.com/archives/008759.html 111. http://windows.fileoftheday.com/archives/008688.html
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040212041518.1968D43D1D>