Good point, I forgot about that, we have done that also. In mysql it is done like this.
select uuid(); But I try to stay away from loading up the db, but its a valid work around. -- Robert Garcia President - BigHead Technology VP Application Development - eventpix.com 15520 Coutelenc Rd Magalia, Ca 95954 ph: 530.645.4040 x222 fax: 530.645.4040 [email protected] - [email protected] http://bighead.net/ - http://eventpix.com/ On Oct 14, 2010, at 12:46 PM, Bill Downall wrote: > In some cases, you can also use your database engine to generate a GUID. In > MS SQL, put this in a DirectDB action: > > SELECT NEWID() > > @@resultset$[1,1] will be your GUID. > > Bill > > > > > > On Thu, Oct 14, 2010 at 3:38 PM, Robert Garcia <[email protected]> wrote: > This is a weakness in witango, but easily shored. Witango lacks the ability > to generate a GUID, but would probably be an easy feature to add, since I > think it can be done by the host OS. > > There are a few ways to shore this in witango... > > 1. If windows witango, find an old but reliable tool, called GUIDMKR. Its a > com object I have used for YEARS with witango. Let me know if you need code. > > 2. In mac or linux, use a command line, this can be done in pearl. > > You could then have code in witango turn that into your GUID into a BYTE > array, so it looks like a code, like a YOUTUBE id, much shorter. > > http://stackoverflow.com/questions/2983065/guid-to-bytearray > > I worked on this for many hours many moons ago. There was always dupes, the > better my algorithm got, the less dupes, but to be safe, start with a TRUE > UUID or GUID generator. GUIDMKR has always served me well on windows/witango. > > -- > > Robert Garcia > President - BigHead Technology > VP Application Development - eventpix.com > 15520 Coutelenc Rd > Magalia, Ca 95954 > ph: 530.645.4040 x222 fax: 530.645.4040 > [email protected] - [email protected] > http://bighead.net/ - http://eventpix.com/ > > On Oct 14, 2010, at 12:18 PM, Roland Dumas wrote: > >> I need to stare at this code a bit more. I made it witango 5 compatible >> (while object and instead of @sleep, I just threw away output based on the >> same timestamp) >> results >> >> code: NZVWIXXX timestamp: 1287058511 >> code: LURAVSXX timestamp: 1287058512 >> code: LURAVSXX timestamp: 1287058513 >> code: NZVWIXXX timestamp: 1287058514 >> code: ZLNKFQXX timestamp: 1287058515 >> code: BNCILFXX timestamp: 1287058516 >> code: KRCCOCXX timestamp: 1287058517 >> code: NZVWIXXX timestamp: 1287058518 >> code: BNCILFXX timestamp: 1287058519 >> code: BNCILFXX timestamp: 1287058520 >> code: NZVWIYXX timestamp: 1287058521 >> code: KRCCOCXX timestamp: 1287058522 >> >> Interesting, don't you think? >> In a long sequence, the repeats are frequent and and trailing Xs... >> >> Thanks for the start. >> >> >> On Oct 14, 2010, at 10:53 AM, Robert Shubert wrote: >> >>> Try this out: >>> >>> <@! start with epoch> >>> <@ASSIGN secs <@TSTOSECS <@CURRENTTIMESTAMP>>> >>> >>> <@! add salt> >>> <@ASSIGN secs "<@RANDOM low=1 high=9>@@secs<@RANDOM low=1 high=9>"> >>> >>> <@! convert to base 26> >>> <@WHILE expr="@@secs > 26"> >>> >>> <@! shift to ascii for capitals 65-90 convert to char and build code> >>> <@IF "<@CURROW>%2 = 0"> >>> <@ASSIGN code '<@CHAR <@CALC "abs(@@secs % 26) + 65">>@@code'> >>> <@ELSE> >>> <@ASSIGN code '@@code<@CHAR <@CALC "abs(@@secs % 26) + 65">>'> >>> </@IF> >>> >>> <@! shift place for base conversion> >>> <@ASSIGN secs <@CALC "@@secs / 26" precision=0>> >>> >>> </@WHILE> >>> >>> Final Code: @@code >>> >>> DISCLAIMER: It is possible to create the same code if this routine is run >>> multiple times in the same second. Add a <@SLEEP 1000> to prevent this. >>> Also, there is an abs() in there because doing modulo on large values >>> produces a negative value. This is incorrect behavior on Witango's part and >>> something that I'll need to fix in the server. I do not think it produces a >>> collision problem in this routine, but it may. It is likely tied to small >>> floating point variable used in the routine. Oh, and there is also a >>> rounding error that I didn't work out, but again, it only changed some >>> shift points (26^1 place increases at unit=13 rather than unit=0). This can >>> removed by floor()ing the base conversion shift in the final @CALC. Again, >>> I do not believe that this causes a collision situation. Also, this routine >>> can occasionally create a 7 character code. You may need to check for and >>> ignore these if you want them all to 8 characters (This may be able to be >>> eliminated by increasing the LOW value in the first @RANDOM) Lastly, I >>> don't guarantee this routine. I just whipped it up as a mental exercise, so >>> you may want to test it out some (see if you get a collision over a few >>> million iterations), or show it to someone who is good with algorithms or >>> cryptography. >>> >>> Robert >>> >>> -----Original Message----- >>> From: Roland Dumas [mailto:[email protected]] >>> Sent: Thursday, October 14, 2010 11:42 AM >>> To: [email protected] >>> Subject: Witango-Talk: generating unique codes >>> >>> >>> looking for method to create unique and non-obvious n-digit codes to be >>> used as discount codes. >>> Should be short enough to use as consumer codes (8 digit?), and probably be >>> something simply to enter, such as an all caps, and not have an easily >>> discoverable pattern. >>> >>> I want to generate unique codes and not have to check the history to see if >>> a code has been used before. >>> >>> Suggestions? >>> >>> >>> >>> >>> >>> ---------------------------------------- >>> >>> To unsubscribe from this list, please send an email to [email protected] >>> with "unsubscribe witango-talk" in the body. >>> >>> >>> >>> ---------------------------------------- >>> >>> To unsubscribe from this list, please send an email to [email protected] >>> with "unsubscribe witango-talk" in the body. >>> >> >> >> >> ---------------------------------------- >> >> To unsubscribe from this list, please send an email to [email protected] >> with "unsubscribe witango-talk" in the body. >> > > > To unsubscribe from this list, please send an email to [email protected] > with "unsubscribe witango-talk" in the body. > > > To unsubscribe from this list, please send an email to [email protected] > with "unsubscribe witango-talk" in the body. ---------------------------------------- To unsubscribe from this list, please send an email to [email protected] with "unsubscribe witango-talk" in the body.
