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.

Reply via email to