How about seeding a Random number generator with the hashcode from the url string? Something like this, perhaps:
Random r; string url = "http://www.google.com/search?hl=no&q=help+me+please&lr="; r= new Random(url.GetHashCode()); MessageBox.Show(r.Next(0, 10000).ToString()); url = "http://www.cnn.com/2007/US/07/11/al.qaeda.report/index.html"; r = new Random(url.GetHashCode()); MessageBox.Show(r.Next(0, 10000).ToString()); Of course, one _might_ get equal values for different urls here, but I guess you would be pretty unlucky to run into that, depending on the number of pages you have, of course. Eyvind. -----Opprinnelig melding----- Fra: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] På vegne av Ryan Heath Sendt: 12. juli 2007 10:10 Til: [email protected] Emne: Re: [ADVANCED-DOTNET] Url generated int Its also possible to generate the IDs at runtime. Basically is comes down to, with a few locks here and there... int GetPageID() { pageid = get id from cache ( AppRelativeCurrentExecutionFilePath ) if not in cache { // get id from db creates a new id if page was not seen before pageid = get id from db ( AppRelativeCurrentExecutionFilePath ) store id in cache ( AppRelativeCurrentExecutionFilePath, pageid) } return pageid } HTH // Ryan On 7/11/07, Daniel Barla-Szabo <[EMAIL PROTECTED]> wrote: > Hi, > > There are two problems that I see here: > > 1. Shortening the url / string that you are using GetHashCode() on isn't > going to make the hash code any smaller. Try it on something like this to > see: > > int i = "a".GetHashCode(); > > 2. If you do manage to get a hashing algorithm which brings down your int > "length" to an acceptable size, you will start to get collisions, i.e. you > will have multiple pages with the same hash code. The smaller the int, the > higher the probability. > > > If you absolutely must do this, I would recommend some scheme like this: set > up a script which runs though the folders, looking for the .aspx files, and > then assigning them each a small unique number (like an identity column from > a DB), and writing the results to DB. The system can then translate the URL > into a short int, without any collisions. You must then obviously get the > call operators to search this table for the relevant page, and it's probably > a good idea to cache the relationship in the application as a hashtable / > dictionary. > > You will need to be careful to write the script in such a way that it > doesn't re-assign numbers for urls which are already known / assigned. This > will help avoid scenarios where an entire range shifts up, and all your > logged incidents are all of a sudden against the wrong page. > > HTH > > Regards, > Daniel > > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Paul Cowan > Sent: 11 July 2007 04:52 PM > To: [email protected] > Subject: Re: [ADVANCED-DOTNET] Url generated int > > Hi, > > What we want is a short int that we will put on the bottom of each page so > users can call operators and identify the page in question by this human > readable integer. In the same way as each page in a book has a page number. > > We could keep a big xml look up or something like that we could cache but > the maintenance is unacceptable. > > I would like to be able to generate this number somehow. I was thinking of > something like the following: > > string urlToHash = string.Empty; > for (int i = 0; i < Request.Url.Segments.Length; i++) > { > string candidate = Request.Url.Segments[i].Replace("/", > "").Replace(".aspx", ""); > if (candidate.Length == 0) > continue; > urlToHash += candidate; > } > int hashCode = urlToHash.GetHashCode(); > The number is still quite big but I might go with this. > > Is there anything other than GetHashCode I could use? > > Cheers > > Paul > [EMAIL PROTECTED] > > > > > Date: Wed, 11 Jul 2007 16:46:08 +0200> From: [EMAIL PROTECTED]> > Subject: Re: [ADVANCED-DOTNET] Url generated int> To: > [email protected]> > Hi Paul,> > What's wrong with that > integer?> What about using an hashtable-structure instead? Would it be > possible,> giving your requirements?> > --> Efran Cobisi> > http://www.cobisi.com> > Paul Cowan wrote:> > Hi,> >> > I have a flowing > quandary that I am struggling with. The long and the short of it is that we > have the usual mix of static and dynamic pages for our ASP.NET 2.0 web > site.> >> > What we need is a way of identifying each page on the site. The > dynamic pages do not really worry me. What I would like to do is be able to > identify each page with an int.> >> > The first thing that sprung to mind > was:> >> > Request.Url.GetHashCode();> >> > This unfortunately brings back:> > >> > -81369726> >> > For the folloiwng URL:> >> > > http://localhost/ak/misc/sendtoafriend.aspx> >> > Can anyone think of a > better way to generate a unique integer which we can tag our pages with? The > only thing really unique is the url.> >> > Thanks> > [EMAIL PROTECTED]> > > _________________________________________________________________> > Try > Live.com - your fast, personalised homepage with all the things you care > about in one place.> > http://www.live.com/?mkt=en-gb> > > ===================================> > This list is hosted by DevelopMentor(r) > http://www.develop.com> >> > View archives and manage your subscription(s) > at http://discuss.develop.com> >> > ===================================> > This list is hosted by DevelopMentor(r) http://www.develop.com> > View > archives and manage your subscription(s) at http://discuss.develop.com > _________________________________________________________________ > Feel like a local wherever you go with BackOfMyHand.com > http://www.backofmyhand.com > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.476 / Virus Database: 269.10.2/894 - Release Date: 2007/07/10 > 05:44 PM > > > No virus found in this outgoing message. > Checked by AVG Free Edition. > Version: 7.5.476 / Virus Database: 269.10.2/894 - Release Date: 2007/07/10 > 05:44 PM > > > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com
