Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > hash from long url to short url

Reply
Thread Tools

hash from long url to short url

 
 
joe
Guest
Posts: n/a
 
      02-22-2008
Hello anyone knows how to write a funtion to genereate a tiny url with
letters and numbers only. Something almost always unique. THanks.
 
Reply With Quote
 
 
 
 
Malcolm McLean
Guest
Posts: n/a
 
      02-22-2008

"joe" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hello anyone knows how to write a funtion to genereate a tiny url with
> letters and numbers only. Something almost always unique. THanks.
>

It's inherently impossible to collapse 36^N unique URLs to 36^(N/4) unique
tiny urls.
However there's a hash function on my websites. It's in one of the free
chapters under Basic Algorithms. I recommend that you split the string into
2, and generate 2 unsigned longs. The chance of a collision is so low as to
be negligible. Then use the modulus operation to reduce to alpahanumeric.

--
Free games and programming goodies.
http://www.personal.leeds.ac.uk/~bgy1mm

 
Reply With Quote
 
 
 
 
santosh
Guest
Posts: n/a
 
      02-22-2008
Malcolm McLean wrote:

>
> "joe" <(E-Mail Removed)> wrote in message
>

news:(E-Mail Removed)...
>> Hello anyone knows how to write a funtion to genereate a tiny url
>> with letters and numbers only. Something almost always unique.
>> THanks.
>>

> It's inherently impossible to collapse 36^N unique URLs to 36^(N/4)
> unique tiny urls.
> However there's a hash function on my websites. It's in one of the
> free chapters under Basic Algorithms. I recommend that you split the
> string into 2, and generate 2 unsigned longs. The chance of a
> collision is so low as to be negligible. Then use the modulus
> operation to reduce to alpahanumeric.


Also a Google search seems to show up a lot of TinyURL generators though
not, AFAICS, in C. Maybe the OP can study the code and rewrite it in C.

 
Reply With Quote
 
Ben Bacarisse
Guest
Posts: n/a
 
      02-22-2008
"Malcolm McLean" <(E-Mail Removed)> writes:

> "joe" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> Hello anyone knows how to write a funtion to genereate a tiny url with
>> letters and numbers only. Something almost always unique. THanks.
>>

> It's inherently impossible to collapse 36^N unique URLs to 36^(N/4)
> unique tiny urls.
> However there's a hash function on my websites. It's in one of the
> free chapters under Basic Algorithms. I recommend that you split the
> string into 2, and generate 2 unsigned longs. The chance of a
> collision is so low as to be negligible.


I have a feeling this is a bad idea[1]. The Bernstein hash function
(which is the one on your) site uses unsigned long but will work just
as well with any unsigned integer type. If the OP has access to
longer integers, it seems safer to simply use a longer integer that
than generate two hashes from two parts of the string.

[1] I have no formal argument in support of this, just the feeling
that, since URLs often have similar parts you are wasting the hash
function's mixing ability if you split the string. Anyway, even if
there is no reason to worry here, why take the risk -- unless, of
course, you don't have longer integer types.

--
Ben.
 
Reply With Quote
 
Malcolm McLean
Guest
Posts: n/a
 
      02-22-2008

"Ben Bacarisse" <(E-Mail Removed)> wrote in message
> I have a feeling this is a bad idea[1]. The Bernstein hash function
> (which is the one on your) site uses unsigned long but will work just
> as well with any unsigned integer type. If the OP has access to
> longer integers, it seems safer to simply use a longer integer that
> than generate two hashes from two parts of the string.
>
> [1] I have no formal argument in support of this, just the feeling
> that, since URLs often have similar parts you are wasting the hash
> function's mixing ability if you split the string. Anyway, even if
> there is no reason to worry here, why take the risk -- unless, of
> course, you don't have longer integer types.
>

You might well be right. If two URLs share the same introduction, which is
extremely plausible, then effectively you are wasting a long.

--
Free games and programming goodies.
http://www.personal.leeds.ac.uk/~bgy1mm

 
Reply With Quote
 
CBFalconer
Guest
Posts: n/a
 
      02-22-2008
joe wrote:
>
> Hello anyone knows how to write a funtion to genereate a tiny url with
> letters and numbers only. Something almost always unique. THanks.


Yes. No. You're welcome.

--
[mail]: Chuck F (cbfalconer at maineline dot net)
[page]: <http://cbfalconer.home.att.net>
Try the download section.



--
Posted via a free Usenet account from http://www.teranews.com

 
Reply With Quote
 
Flash Gordon
Guest
Posts: n/a
 
      02-22-2008
Malcolm McLean wrote, On 22/02/08 15:23:
>
> "Ben Bacarisse" <(E-Mail Removed)> wrote in message
>> I have a feeling this is a bad idea[1]. The Bernstein hash function
>> (which is the one on your) site uses unsigned long but will work just
>> as well with any unsigned integer type. If the OP has access to
>> longer integers, it seems safer to simply use a longer integer that
>> than generate two hashes from two parts of the string.
>>
>> [1] I have no formal argument in support of this, just the feeling
>> that, since URLs often have similar parts you are wasting the hash
>> function's mixing ability if you split the string. Anyway, even if
>> there is no reason to worry here, why take the risk -- unless, of
>> course, you don't have longer integer types.
>>

> You might well be right. If two URLs share the same introduction, which
> is extremely plausible, then effectively you are wasting a long.


There is also a significant possibility of two URLs sharing a
significant tail. E.g.
http://www.somesite/area/somewhere?p...t=prettyformat
--
Flash Gordon
 
Reply With Quote
 
joe
Guest
Posts: n/a
 
      02-22-2008
May be i could get the char value of each letter multiply it by the
position in the string and come up with a number. Just an idea.
On Feb 22, 2:31 pm, CBFalconer <(E-Mail Removed)> wrote:
> joe wrote:
>
> > Hello anyone knows how to write a funtion to genereate a tiny url with
> > letters and numbers only. Something almost always unique. THanks.

>
> Yes. No. You're welcome.
>
> --
> [mail]: Chuck F (cbfalconer at maineline dot net)
> [page]: <http://cbfalconer.home.att.net>
> Try the download section.
>
> --
> Posted via a free Usenet account fromhttp://www.teranews.com


 
Reply With Quote
 
Default User
Guest
Posts: n/a
 
      02-22-2008
joe wrote:

> May be i could get the char value of each letter multiply it by the
> position in the string and come up with a number. Just an idea.


Please don't top-post. Your replies belong following or interspersed
with properly trimmed quotes. See the majority of other posts in the
newsgroup, or:
<http://www.caliburn.nl/topposting.html>
 
Reply With Quote
 
Ben Bacarisse
Guest
Posts: n/a
 
      02-23-2008
joe <(E-Mail Removed)> writes:

>> > Hello anyone knows how to write a funtion to genereate a tiny url with
>> > letters and numbers only. Something almost always unique. THanks.


> May be i could get the char value of each letter multiply it by the
> position in the string and come up with a number. Just an idea.


[Top posting corrected]. That is one way, but there has been a lot of
study of how to turn a string into a number and your method has no
particular advantage over others that have been found to be useful.
The advice you've had to use a known hash function is good advice.

--
Ben.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
hash of hash of hash of hash in c++ rp C++ 1 11-10-2011 04:45 PM
Having compilation error: no match for call to (const __gnu_cxx::hash<long long int>) (const long long int&) veryhotsausage C++ 1 07-04-2008 05:41 PM
Hash#select returns an array but Hash#reject returns a hash... Srijayanth Sridhar Ruby 19 07-02-2008 12:49 PM
longs, long longs, short short long ints . . . huh?! David Geering C Programming 15 01-11-2007 09:39 PM
unsigned short short? slougheed@gmail.com C++ 4 10-16-2006 11:25 PM



Advertisments