1) I personally "disliked" the idea of losing the "supported" languages, being pointed to as one of the reason for the "excessive" storage. Therefore I opted to keep it but with a minor touch.
- The pl_language field will be set as per your plans, thus showing the "primary" language supported by the user's browser.
- I changed the use of the "pl_languageactual" field to a kind of "supported_languages" field, therefore it will be holding the "strSupportedLanguage" content. I set the length of that field to 50 characters since there were some truncated entries.
2) It's surprising that nobody caught the domain filtering thing. I guess it would have been mentioned if someone would have really used it, but I guess people didn't really read through to implement it, or they may not have a need for it right now.
3) Establishing the Database connection when setting the properties for the class was a nice move. Very good one.
4) Searching a correspondance for a given language using a linear scan as it is actually implemented is not quite performant. For people using the array approach, making sure the array is properly sorted would make it possible to implement a binary search. Globally, even if you have 256 defined languages, the worse case scenario would lead to 8 comparaisons to get to proper entry, to this is a substantial gain specially if the language you're looking for is "far" alphabetically talking.
5) One way to limit the disk usage, would be to use a single letter to identify the browser types. So "B" could be used for "Browser", "R" for "Robot", "U" being the default for "Unknown" or "Undefined". I applied this approach and gained some kilobytes easily.
6) The fields identifying the browsers and Operating systems, could easily be change for numbers, which would in fact be the entry number in the corresponding arrays. Therefore if there is a match for "WinXP", storing the appropriate relative value in the field would save some valuable disk space.
Same thing applies for the browsers. I guess storing the number 4 for instance would be a saver compared to "Internet Explorer 6", right ?
7) During my customization phase, I transfered those arrays into a separate configuration database. I must add, I'm glad I did it that way.
For example, when putting MetaTraffic in "Learn" mode, I'm updating some reference counters indicating how oftently the entries in the OS, Browsers, Domain Referrers tables were in fact used for matches.
When I load the arrays from the table, I sort them in descending order of usage frequency, therefore I'm improving the chances to find a match in less trials when MetaTraffic will do its set of comparaisons.
8) In my setup, the default page is not the one you've set. My default page is showing the login page. Also, I added access levels support for the users, so administration functions are visible only for the appropriate users, thus allowing other people to consult the information and preventing undesired situations.
9) For the On-the-fly deletion, this is a nice touch, although as implemented it is a tad too "demanding" to be appropriate.
Since the deletions are done based on days, I setup an Application() variable indicating when was the last performed cleanup. On the very first access of any given day, the deletion is taking place. This should be fast enough since there will be only one day worth of data to remove on each daily invocation.
The exception to the rule will be the very first invokation of all, since there can be a substantial amount of records to delete. I would personnally opt to delete them via the setup form for the first shot.
If you know for sure that either IIS or the server is recycled on a daily basis where a given site is being hosted, the deletion process could easily be moved up in the "global.asa" file under the Application_Start() subroutine, thus ensuring the database is cleaned every day.
10) If "Auto-Deletion" is activated, "Auto-Compaction" is to be considered as well. Setting up an application level variable indicating somehow that the compaction is ongoing, could be used and checked by the site pages. If the variable is set, then the people are re-directed to a simple page indicating that "brief maintenance is underway...".
The page can be set to auto-refresh every 10 seconds for instance, until the compaction is completed, or a preset threshold has been reached. Once completed, the people are then re-directed to the page they were on when the compaction was initiated.
If the threshold has been reach before completion, there isn't much that can be done beside sending an e-mail to the webmaster. If the compaction was successfull but took longer to run, the people will still be re-directed adequately when they will refresh their browsers.
Application variable might not be the safest way, but it sure is faster than checking for the existance of the backup database via FSO, although the compaction process should make sure that the previous compaction terminated properly prior to initiate the process. In such case a simple call with FSO and setting the Application variable would do the trick nicely to inform the people.
I guess this is it for the moment, I'll let you digest this "little" note.
I'm pretty sure there will be some comments/ideas from other people too.
I think the idea of "Paying" might have put people off.
I'm sticking with v1.2 beta3 for the time being.
Mark Voss
[url="http://small-business-websites.co.uk/"]Small Business Websites[/url] [url="http://fastsnail.co.uk/"]FastSnail[/url] [url="http://sbwhosting.com/"]SBW Hosting[/url]
quote:Originally posted by MarkVoss
I think the idea of "Paying" might have put people off.
I'm sticking with v1.2 beta3 for the time being.
Hi there,
Perhaps, but this will always be a catch 22 situation.
On one side, people want to pay as less as possible, if at all.
On the other side, nobody wants to work for peanuts, money is not growing in the trees after all, or is it ?
Perhaps the boat was missed with the marketing aspect of MetaTraffic. I'm under the belief that people took things for granted.
People were more than happy to have a product with decent options and features, and now that some money is being asked in return for the 100's of hours spent at coding it, everyone leaves. That's a killer!
So in counterpart, I can suggest the following.
Centralize the mods applied by the users and create an updated Metatraffic out of it, creating a "new" little monster. Whoever will contribute at adding features and/or options to it, could be somehow compensated by the registration fees coverage.
On the other hand, people that are "only" "end users", will then have to pay for the product, which is fairly understandable. We may opt for a "donation" approach maybe ?
Let's face the fact, some great products are free these days, so competition is really difficult in that jungle. However, the bills need to be paid for still, so we have to find a solution.
I whole heartedly agree with Daniel, I believe that this product should have a price set for it's use. There have been many hours of work put into it, not to mention the headaches of listening to and replying to people on this forum. Does anyone remember the ol'cliche... "Time is money!" ? I think Chad deserves to get a few bucks for such a nice bit of work he has done.
What I do NOT agree with though, is people / companies GOUGING the public for the product(s) they produce. What they might find more profitable, is that MORE people will pay for thier products which are competitively priced, then when they are over priced.
Think of it like this... If 100 people purchase product XYZ for $100.00 USD, that would be $10,000.00 USD, plus a bunch of people who would find ways to Hack/Crack the product for free. But if product XYZ were priced at $50.00 USD... then those same 100 people would purchase it... plus there could be a posibility of several hundred (if not thousands) more who would purchase it too!!! Just for the sake of arguments, lets say that 1000 people purchased it (900 more than the original 100). That would be $50,000 USD. That is a huge increase in sales!!!
For example, if Chad were to put a price on this product... how much would be reasonable? $50.00??? I wouldn't pay for it at that price. But if it were more like $10.00 to $15.00, then I would definately consider it and I am sure many others would as well.
Don't forget that word of mouth will help sell a product more than the advertising will. If it is a good product (which this IS!) and someone personally recomends it to a friend / collegue (Which I have already done... to several people), then that friend / collegue will review it and most likely purchase it, if it was priced right!
Anyway, that is my 2 cents. Ok, not even!!! hehe.
PS. Chad... I think in the mean time, if you set up a PAYPAL Account (or something similar) you might find that you might get some donations.
MetaTraffic v1.3 Beta 1
Good day Chad,
First thing first, good job buddy!
Here are some comments/suggestions/ideas :
1) I personally "disliked" the idea of losing the "supported" languages, being pointed to as one of the reason for the "excessive" storage. Therefore I opted to keep it but with a minor touch.
- The pl_language field will be set as per your plans, thus showing the "primary" language supported by the user's browser.
- I changed the use of the "pl_languageactual" field to a kind of "supported_languages" field, therefore it will be holding the "strSupportedLanguage" content. I set the length of that field to 50 characters since there were some truncated entries.
2) It's surprising that nobody caught the domain filtering thing. I guess it would have been mentioned if someone would have really used it, but I guess people didn't really read through to implement it, or they may not have a need for it right now.
3) Establishing the Database connection when setting the properties for the class was a nice move. Very good one.
4) Searching a correspondance for a given language using a linear scan as it is actually implemented is not quite performant. For people using the array approach, making sure the array is properly sorted would make it possible to implement a binary search. Globally, even if you have 256 defined languages, the worse case scenario would lead to 8 comparaisons to get to proper entry, to this is a substantial gain specially if the language you're looking for is "far" alphabetically talking.
5) One way to limit the disk usage, would be to use a single letter to identify the browser types. So "B" could be used for "Browser", "R" for "Robot", "U" being the default for "Unknown" or "Undefined". I applied this approach and gained some kilobytes easily.
6) The fields identifying the browsers and Operating systems, could easily be change for numbers, which would in fact be the entry number in the corresponding arrays. Therefore if there is a match for "WinXP", storing the appropriate relative value in the field would save some valuable disk space.
Same thing applies for the browsers. I guess storing the number 4 for instance would be a saver compared to "Internet Explorer 6", right ?
7) During my customization phase, I transfered those arrays into a separate configuration database. I must add, I'm glad I did it that way.
For example, when putting MetaTraffic in "Learn" mode, I'm updating some reference counters indicating how oftently the entries in the OS, Browsers, Domain Referrers tables were in fact used for matches.
When I load the arrays from the table, I sort them in descending order of usage frequency, therefore I'm improving the chances to find a match in less trials when MetaTraffic will do its set of comparaisons.
8) In my setup, the default page is not the one you've set. My default page is showing the login page. Also, I added access levels support for the users, so administration functions are visible only for the appropriate users, thus allowing other people to consult the information and preventing undesired situations.
9) For the On-the-fly deletion, this is a nice touch, although as implemented it is a tad too "demanding" to be appropriate.
Since the deletions are done based on days, I setup an Application() variable indicating when was the last performed cleanup. On the very first access of any given day, the deletion is taking place. This should be fast enough since there will be only one day worth of data to remove on each daily invocation.
The exception to the rule will be the very first invokation of all, since there can be a substantial amount of records to delete. I would personnally opt to delete them via the setup form for the first shot.
If you know for sure that either IIS or the server is recycled on a daily basis where a given site is being hosted, the deletion process could easily be moved up in the "global.asa" file under the Application_Start() subroutine, thus ensuring the database is cleaned every day.
10) If "Auto-Deletion" is activated, "Auto-Compaction" is to be considered as well. Setting up an application level variable indicating somehow that the compaction is ongoing, could be used and checked by the site pages. If the variable is set, then the people are re-directed to a simple page indicating that "brief maintenance is underway...".
The page can be set to auto-refresh every 10 seconds for instance, until the compaction is completed, or a preset threshold has been reached. Once completed, the people are then re-directed to the page they were on when the compaction was initiated.
If the threshold has been reach before completion, there isn't much that can be done beside sending an e-mail to the webmaster. If the compaction was successfull but took longer to run, the people will still be re-directed adequately when they will refresh their browsers.
Application variable might not be the safest way, but it sure is faster than checking for the existance of the backup database via FSO, although the compaction process should make sure that the previous compaction terminated properly prior to initiate the process. In such case a simple call with FSO and setting the Application variable would do the trick nicely to inform the people.
I guess this is it for the moment, I'll let you digest this "little" note.
I'm pretty sure there will be some comments/ideas from other people too.
Best regards.
MetaTraffic v1.3 Beta 1
Good day,
Am I missing something ?
The only person who posted something about the beta testing is me. I feel kind of lonely guys, don't be shy, you can send your comments too!
Bye for now...
MetaTraffic v1.3 Beta 1
I think the idea of "Paying" might have put people off.
I'm sticking with v1.2 beta3 for the time being.
Mark Voss
[url="http://small-business-websites.co.uk/"]Small Business Websites[/url] [url="http://fastsnail.co.uk/"]FastSnail[/url] [url="http://sbwhosting.com/"]SBW Hosting[/url]
MetaTraffic v1.3 Beta 1
quote:Originally posted by MarkVoss
I think the idea of "Paying" might have put people off.
I'm sticking with v1.2 beta3 for the time being.
Hi there,
Perhaps, but this will always be a catch 22 situation.
On one side, people want to pay as less as possible, if at all.
On the other side, nobody wants to work for peanuts, money is not growing in the trees after all, or is it ?
Perhaps the boat was missed with the marketing aspect of MetaTraffic. I'm under the belief that people took things for granted.
People were more than happy to have a product with decent options and features, and now that some money is being asked in return for the 100's of hours spent at coding it, everyone leaves. That's a killer!
So in counterpart, I can suggest the following.
Centralize the mods applied by the users and create an updated Metatraffic out of it, creating a "new" little monster. Whoever will contribute at adding features and/or options to it, could be somehow compensated by the registration fees coverage.
On the other hand, people that are "only" "end users", will then have to pay for the product, which is fairly understandable. We may opt for a "donation" approach maybe ?
Let's face the fact, some great products are free these days, so competition is really difficult in that jungle. However, the bills need to be paid for still, so we have to find a solution.
Anyone has ideas, suggestions, comments ?
Regards.
MetaTraffic v1.3 Beta 1
I whole heartedly agree with Daniel, I believe that this product should have a price set for it's use. There have been many hours of work put into it, not to mention the headaches of listening to and replying to people on this forum. Does anyone remember the ol'cliche... "Time is money!" ? I think Chad deserves to get a few bucks for such a nice bit of work he has done.
What I do NOT agree with though, is people / companies GOUGING the public for the product(s) they produce. What they might find more profitable, is that MORE people will pay for thier products which are competitively priced, then when they are over priced.
Think of it like this... If 100 people purchase product XYZ for $100.00 USD, that would be $10,000.00 USD, plus a bunch of people who would find ways to Hack/Crack the product for free. But if product XYZ were priced at $50.00 USD... then those same 100 people would purchase it... plus there could be a posibility of several hundred (if not thousands) more who would purchase it too!!! Just for the sake of arguments, lets say that 1000 people purchased it (900 more than the original 100). That would be $50,000 USD. That is a huge increase in sales!!!
For example, if Chad were to put a price on this product... how much would be reasonable? $50.00??? I wouldn't pay for it at that price. But if it were more like $10.00 to $15.00, then I would definately consider it and I am sure many others would as well.
Don't forget that word of mouth will help sell a product more than the advertising will. If it is a good product (which this IS!) and someone personally recomends it to a friend / collegue (Which I have already done... to several people), then that friend / collegue will review it and most likely purchase it, if it was priced right!
Anyway, that is my 2 cents. Ok, not even!!! hehe.
PS. Chad... I think in the mean time, if you set up a PAYPAL Account (or something similar) you might find that you might get some donations.
TechStud,
www.TechStud.com