Cubist's first bug report

classic Classic list List threaded Threaded
39 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Cubist's first bug report

Quentin Long
Code which exhibits the bug:

on mouseUp
   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
   repeat 100 times
      add 1 to any item of Fred
      put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
   end repeat
   put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
end mouseUp

This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?

http://quality.livecode.com/show_bug.cgi?id=17795

   
"Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
   
Read the webcomic at [ http://www.atarmslength.net ]!
   
If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

mwieder
On 06/05/2016 07:12 AM, Quentin Long wrote:

> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>
> http://quality.livecode.com/show_bug.cgi?id=17795

See more gory details at
http://forums.livecode.com/viewtopic.php?f=7&t=27430

It looks like a regression of bug #7919.

--
  Mark Wieder
  [hidden email]

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
--
 Mark Wieder
 ahsoftware@gmail.com
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

xtalkprogrammer
In reply to this post by Quentin Long
Hi Quentin,

I see the same results, when I try your code. However, if I first store
the random value and add 1 to an item in the string in the next line in
the script, it works correctly. Apparently, the random function and the
add command are incompatible.

on mouseUp
    put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
    repeat 100
       put random(16) into myRandom
       add 1 to item myRandom of myVar
       put myVar & cr after myTempList
    end repeat
    put sum(myVar) & cr & myTempList
end mouseUp

Kind regards,

Mark Schonewille
http://economy-x-talk.com
https://www.facebook.com/marksch

Buy the most extensive book on the
LiveCode language:
http://livecodebeginner.economy-x-talk.com

Op 05-Jun-16 om 16:12 schreef Quentin Long:

> Code which exhibits the bug:
>
> on mouseUp
>    put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>    repeat 100 times
>       add 1 to any item of Fred
>       put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>    end repeat
>    put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
> end mouseUp
>
> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>
> http://quality.livecode.com/show_bug.cgi?id=17795
>


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Kind regards,

Drs. Mark Schonewille

Economy-x-Talk Consultancy and Software Engineering
Homepage: http://economy-x-talk.com
Twitter: http://twitter.com/xtalkprogrammer
Facebook: http://facebook.com/LiveCode.Beginner
KvK: 50277553
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

[-hh]
What's the culprit for that? I dare say:

= It's not the random (as Mark S. proved with his example)
= It's not a random-incompatible "add" (see example below)

It is the basic problem that LC has with counting items,
lines, words or other chunks. The number of <chunks> is
defined in a logically inconsistent way.

Example that works correctly:

local f="OUT", c=","
on mouseUp
  lock screen; lock messages
  put the millisecs into m1
  put empty into fld f
  put 0 into s[1]; put 0 into s[2]; put 0 into s[3]
  repeat 10000
    add 1 to s[random(3)]
    put cr & s[1] &c& s[2] &c& s[3] after s0
  end repeat
  put the millisecs - m1 &cr& \
        s[1]+s[2]+s[3] &cr& s0 into fld f
  unlock screen; unlock messages
end mouseUp
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Dar Scott
In reply to this post by xtalkprogrammer
Very nice and clean example code.  

Also, as you hinted, this does have the problem:
        add 1 to item random(16) of myVar

I infer from this that the problem is very likely not in how 'any' counts items.  

This also applies to subtract and multiply.  I suspect that random(16) is being evaluated twice based on a first glance at the pattern.  Because of that, my guess is that this bug will not cause a crash.  

The problem also occurs when I use my own random function.  

it looks as though this...
        add 1 to any item of x
... is being evaluated as...
        put 1 + any item of x into any item of x
... which is incorrect.

Perhaps that is just the info needed for a quick fix.  

This also will show up for any function with side effects built-in or not, so this is a far ranging bug and it should be pushed up in priority.  

Dar


> On Jun 5, 2016, at 8:48 AM, Mark Schonewille <[hidden email]> wrote:
>
> Hi Quentin,
>
> I see the same results, when I try your code. However, if I first store the random value and add 1 to an item in the string in the next line in the script, it works correctly. Apparently, the random function and the add command are incompatible.
>
> on mouseUp
>   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
>   repeat 100
>      put random(16) into myRandom
>      add 1 to item myRandom of myVar
>      put myVar & cr after myTempList
>   end repeat
>   put sum(myVar) & cr & myTempList
> end mouseUp
>
> Kind regards,
>
> Mark Schonewille
> http://economy-x-talk.com
> https://www.facebook.com/marksch
>
> Buy the most extensive book on the
> LiveCode language:
> http://livecodebeginner.economy-x-talk.com
>
> Op 05-Jun-16 om 16:12 schreef Quentin Long:
>> Code which exhibits the bug:
>>
>> on mouseUp
>>   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>>   repeat 100 times
>>      add 1 to any item of Fred
>>      put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>   end repeat
>>   put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>> end mouseUp
>>
>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>
>> http://quality.livecode.com/show_bug.cgi?id=17795
>>
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Dar Scott
In reply to this post by [-hh]
Very good test!

I mentioned in crossed email that I suspect reevaluation.  Since the problem shows up with item and not array subscripts, I would suspect the reevaluation is done to avoid some problem.  Even so, the item number should be computed once and saved even if the character location in the string is recomputed.  

Dar


> On Jun 5, 2016, at 11:47 AM, [-hh] <[hidden email]> wrote:
>
> What's the culprit for that? I dare say:
>
> = It's not the random (as Mark S. proved with his example)
> = It's not a random-incompatible "add" (see example below)
>
> It is the basic problem that LC has with counting items,
> lines, words or other chunks. The number of <chunks> is
> defined in a logically inconsistent way.
>
> Example that works correctly:
>
> local f="OUT", c=","
> on mouseUp
>  lock screen; lock messages
>  put the millisecs into m1
>  put empty into fld f
>  put 0 into s[1]; put 0 into s[2]; put 0 into s[3]
>  repeat 10000
>    add 1 to s[random(3)]
>    put cr & s[1] &c& s[2] &c& s[3] after s0
>  end repeat
>  put the millisecs - m1 &cr& \
>        s[1]+s[2]+s[3] &cr& s0 into fld f
>  unlock screen; unlock messages
> end mouseUp
>
>
>
> --
> View this message in context: http://runtime-revolution.278305.n4.nabble.com/Cubist-s-first-bug-report-tp4705407p4705410.html
> Sent from the Revolution - User mailing list archive at Nabble.com.
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Dar Scott
In reply to this post by Dar Scott
Here's a script (derived from Mark's) that illustrates the double call:

local sRandomCount

on mouseUp
        put LF into newLine
        put 0 into sRandomCount
        put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
        repeat 100
                add 1 to item myrandom(16) of myVar
                put myVar & newLine after myTempList
        end repeat
        put sRandomCount & tab & sum(myVar) & newLine & myTempList
end mouseUp

function myRandom n
        add 1 to sRandomCount
        return random(n)
end myRandom




> On Jun 5, 2016, at 12:42 PM, Dar Scott <[hidden email]> wrote:
>
> Very nice and clean example code.  
>
> Also, as you hinted, this does have the problem:
> add 1 to item random(16) of myVar
>
> I infer from this that the problem is very likely not in how 'any' counts items.  
>
> This also applies to subtract and multiply.  I suspect that random(16) is being evaluated twice based on a first glance at the pattern.  Because of that, my guess is that this bug will not cause a crash.  
>
> The problem also occurs when I use my own random function.  
>
> it looks as though this...
> add 1 to any item of x
> ... is being evaluated as...
> put 1 + any item of x into any item of x
> ... which is incorrect.
>
> Perhaps that is just the info needed for a quick fix.  
>
> This also will show up for any function with side effects built-in or not, so this is a far ranging bug and it should be pushed up in priority.  
>
> Dar
>
>
>> On Jun 5, 2016, at 8:48 AM, Mark Schonewille <[hidden email]> wrote:
>>
>> Hi Quentin,
>>
>> I see the same results, when I try your code. However, if I first store the random value and add 1 to an item in the string in the next line in the script, it works correctly. Apparently, the random function and the add command are incompatible.
>>
>> on mouseUp
>>  put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
>>  repeat 100
>>     put random(16) into myRandom
>>     add 1 to item myRandom of myVar
>>     put myVar & cr after myTempList
>>  end repeat
>>  put sum(myVar) & cr & myTempList
>> end mouseUp
>>
>> Kind regards,
>>
>> Mark Schonewille
>> http://economy-x-talk.com
>> https://www.facebook.com/marksch
>>
>> Buy the most extensive book on the
>> LiveCode language:
>> http://livecodebeginner.economy-x-talk.com
>>
>> Op 05-Jun-16 om 16:12 schreef Quentin Long:
>>> Code which exhibits the bug:
>>>
>>> on mouseUp
>>>  put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>>>  repeat 100 times
>>>     add 1 to any item of Fred
>>>     put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>>  end repeat
>>>  put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>> end mouseUp
>>>
>>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>>
>>> http://quality.livecode.com/show_bug.cgi?id=17795
>>>
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Fun (was Re: Cubist's first bug report)

Dar Scott
Just for fun:

on mouseUp
   put LF into newLine
   put 0 into sRandomCount
   put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
   repeat 100
      add zero to any item of myVar
      put myVar & newLine after myTempList
   end repeat
   put  sum(myVar) & newLine & myTempList
end mouseUp



> On Jun 5, 2016, at 1:15 PM, [hidden email] wrote:
>
> Here's a script (derived from Mark's) that illustrates the double call:
>
> local sRandomCount
>
> on mouseUp
> put LF into newLine
> put 0 into sRandomCount
> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
> repeat 100
> add 1 to item myrandom(16) of myVar
> put myVar & newLine after myTempList
> end repeat
> put sRandomCount & tab & sum(myVar) & newLine & myTempList
> end mouseUp
>
> function myRandom n
> add 1 to sRandomCount
> return random(n)
> end myRandom
>
>
>
>
>> On Jun 5, 2016, at 12:42 PM, Dar Scott <[hidden email]> wrote:
>>
>> Very nice and clean example code.  
>>
>> Also, as you hinted, this does have the problem:
>> add 1 to item random(16) of myVar
>>
>> I infer from this that the problem is very likely not in how 'any' counts items.  
>>
>> This also applies to subtract and multiply.  I suspect that random(16) is being evaluated twice based on a first glance at the pattern.  Because of that, my guess is that this bug will not cause a crash.  
>>
>> The problem also occurs when I use my own random function.  
>>
>> it looks as though this...
>> add 1 to any item of x
>> ... is being evaluated as...
>> put 1 + any item of x into any item of x
>> ... which is incorrect.
>>
>> Perhaps that is just the info needed for a quick fix.  
>>
>> This also will show up for any function with side effects built-in or not, so this is a far ranging bug and it should be pushed up in priority.  
>>
>> Dar
>>
>>
>>> On Jun 5, 2016, at 8:48 AM, Mark Schonewille <[hidden email]> wrote:
>>>
>>> Hi Quentin,
>>>
>>> I see the same results, when I try your code. However, if I first store the random value and add 1 to an item in the string in the next line in the script, it works correctly. Apparently, the random function and the add command are incompatible.
>>>
>>> on mouseUp
>>> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
>>> repeat 100
>>>    put random(16) into myRandom
>>>    add 1 to item myRandom of myVar
>>>    put myVar & cr after myTempList
>>> end repeat
>>> put sum(myVar) & cr & myTempList
>>> end mouseUp
>>>
>>> Kind regards,
>>>
>>> Mark Schonewille
>>> http://economy-x-talk.com
>>> https://www.facebook.com/marksch
>>>
>>> Buy the most extensive book on the
>>> LiveCode language:
>>> http://livecodebeginner.economy-x-talk.com
>>>
>>> Op 05-Jun-16 om 16:12 schreef Quentin Long:
>>>> Code which exhibits the bug:
>>>>
>>>> on mouseUp
>>>> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>>>> repeat 100 times
>>>>    add 1 to any item of Fred
>>>>    put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>>> end repeat
>>>> put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>>> end mouseUp
>>>>
>>>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>>>
>>>> http://quality.livecode.com/show_bug.cgi?id=17795
>>>>
>>>
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> [hidden email]
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Fun (was Re: Cubist's first bug report)

Dar Scott
on mouseUp
   put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
   repeat 1000
      add zero to any item of myVar
   end repeat
   put  myVar
end mouseUp

> On Jun 5, 2016, at 2:06 PM, [hidden email] wrote:
>
> Just for fun:
>
> on mouseUp
>   put LF into newLine
>   put 0 into sRandomCount
>   put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
>   repeat 100
>      add zero to any item of myVar
>      put myVar & newLine after myTempList
>   end repeat
>   put  sum(myVar) & newLine & myTempList
> end mouseUp
>
>
>
>> On Jun 5, 2016, at 1:15 PM, [hidden email] wrote:
>>
>> Here's a script (derived from Mark's) that illustrates the double call:
>>
>> local sRandomCount
>>
>> on mouseUp
>> put LF into newLine
>> put 0 into sRandomCount
>> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
>> repeat 100
>> add 1 to item myrandom(16) of myVar
>> put myVar & newLine after myTempList
>> end repeat
>> put sRandomCount & tab & sum(myVar) & newLine & myTempList
>> end mouseUp
>>
>> function myRandom n
>> add 1 to sRandomCount
>> return random(n)
>> end myRandom
>>
>>
>>
>>
>>> On Jun 5, 2016, at 12:42 PM, Dar Scott <[hidden email]> wrote:
>>>
>>> Very nice and clean example code.  
>>>
>>> Also, as you hinted, this does have the problem:
>>> add 1 to item random(16) of myVar
>>>
>>> I infer from this that the problem is very likely not in how 'any' counts items.  
>>>
>>> This also applies to subtract and multiply.  I suspect that random(16) is being evaluated twice based on a first glance at the pattern.  Because of that, my guess is that this bug will not cause a crash.  
>>>
>>> The problem also occurs when I use my own random function.  
>>>
>>> it looks as though this...
>>> add 1 to any item of x
>>> ... is being evaluated as...
>>> put 1 + any item of x into any item of x
>>> ... which is incorrect.
>>>
>>> Perhaps that is just the info needed for a quick fix.  
>>>
>>> This also will show up for any function with side effects built-in or not, so this is a far ranging bug and it should be pushed up in priority.  
>>>
>>> Dar
>>>
>>>
>>>> On Jun 5, 2016, at 8:48 AM, Mark Schonewille <[hidden email]> wrote:
>>>>
>>>> Hi Quentin,
>>>>
>>>> I see the same results, when I try your code. However, if I first store the random value and add 1 to an item in the string in the next line in the script, it works correctly. Apparently, the random function and the add command are incompatible.
>>>>
>>>> on mouseUp
>>>> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
>>>> repeat 100
>>>>   put random(16) into myRandom
>>>>   add 1 to item myRandom of myVar
>>>>   put myVar & cr after myTempList
>>>> end repeat
>>>> put sum(myVar) & cr & myTempList
>>>> end mouseUp
>>>>
>>>> Kind regards,
>>>>
>>>> Mark Schonewille
>>>> http://economy-x-talk.com
>>>> https://www.facebook.com/marksch
>>>>
>>>> Buy the most extensive book on the
>>>> LiveCode language:
>>>> http://livecodebeginner.economy-x-talk.com
>>>>
>>>> Op 05-Jun-16 om 16:12 schreef Quentin Long:
>>>>> Code which exhibits the bug:
>>>>>
>>>>> on mouseUp
>>>>> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>>>>> repeat 100 times
>>>>>   add 1 to any item of Fred
>>>>>   put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>>>> end repeat
>>>>> put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>>>> end mouseUp
>>>>>
>>>>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>>>>
>>>>> http://quality.livecode.com/show_bug.cgi?id=17795
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> [hidden email]
>>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> [hidden email]
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Fun (was Re: Cubist's first bug report)

[-hh]
Dar Scott wrote
on mouseUp
   put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
   repeat 1000
      add zero to any item of myVar
   end repeat
   put  myVar
end mouseUp
Your example is really convincing, nothing to say more.

This introduces, still funny, some variation:
on mouseUp
  put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
  repeat 1000
    add 0 to item (any item of myVar) of myVar
  end repeat
  put  myVar into fld 1
end mouseUp

And this, not this much funny, creates a CRASH (showing "inf"):
on mouseUp
  put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
  repeat 1000
    add 1 to item (any item of myVar) of myVar
  end repeat
  put  myVar into fld 1
end mouseUp
Reply | Threaded
Open this post in threaded view
|

RE: Cubist's first bug report

Clarence P Martin
In reply to this post by Quentin Long
I feel that I am somewhere in another world.
Can someone please explain to me where the "Any Item" or even Just the command "Any" is documented? I can't seem to find this.
Sorry if this sounds like a stupid question, but when I see something that is new to me, I have to explore it and its uses.

Sincerely,

Clarence Martin
Email: [hidden email]
Cell: 626 6965561

-----Original Message-----
From: use-livecode [mailto:[hidden email]] On Behalf Of Quentin Long
Sent: Sunday, June 05, 2016 7:12 AM
To: [hidden email]
Subject: Cubist's first bug report

Code which exhibits the bug:

on mouseUp
   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
   repeat 100 times
      add 1 to any item of Fred
      put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
   end repeat
   put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
end mouseUp

This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?

http://quality.livecode.com/show_bug.cgi?id=17795

   
"Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
   
Read the webcomic at [ http://www.atarmslength.net ]!
   
If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Dar Scott
The word 'any' is in the dictionary.  Well, it is in mine.  It can apply to a chunk, a control or a card.  A randomly selected thing is used.  You can also use the function random() and 'the number of' to do the same thing.  

Also available are 'first' and 'last'.  


> On Jun 5, 2016, at 3:50 PM, ** Clarence P Martin ** <[hidden email]> wrote:
>
> I feel that I am somewhere in another world.
> Can someone please explain to me where the "Any Item" or even Just the command "Any" is documented? I can't seem to find this.
> Sorry if this sounds like a stupid question, but when I see something that is new to me, I have to explore it and its uses.
>
> Sincerely,
>
> Clarence Martin
> Email: [hidden email]
> Cell: 626 6965561
>
> -----Original Message-----
> From: use-livecode [mailto:[hidden email]] On Behalf Of Quentin Long
> Sent: Sunday, June 05, 2016 7:12 AM
> To: [hidden email]
> Subject: Cubist's first bug report
>
> Code which exhibits the bug:
>
> on mouseUp
>   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>   repeat 100 times
>      add 1 to any item of Fred
>      put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>   end repeat
>   put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
> end mouseUp
>
> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>
> http://quality.livecode.com/show_bug.cgi?id=17795
>
>
> "Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
>
> Read the webcomic at [ http://www.atarmslength.net ]!
>
> If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Jerry Jensen-2
In reply to this post by Clarence P Martin
I just spent a few minutes in the 8.0.1 dictionary and did not find it. That thing is useless! Maybe its because I’m new to 8, but where is “any" documented? How in the world does one find it?
.Jerry

> On Jun 5, 2016, at 2:50 PM, ** Clarence P Martin ** <[hidden email]> wrote:
>
> I feel that I am somewhere in another world.
> Can someone please explain to me where the "Any Item" or even Just the command "Any" is documented? I can't seem to find this.
> Sorry if this sounds like a stupid question, but when I see something that is new to me, I have to explore it and its uses.
>
> Sincerely,
>
> Clarence Martin
> Email: [hidden email]
> Cell: 626 6965561
>
> -----Original Message-----
> From: use-livecode [mailto:[hidden email]] On Behalf Of Quentin Long
> Sent: Sunday, June 05, 2016 7:12 AM
> To: [hidden email]
> Subject: Cubist's first bug report
>
> Code which exhibits the bug:
>
> on mouseUp
>   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>   repeat 100 times
>      add 1 to any item of Fred
>      put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>   end repeat
>   put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
> end mouseUp
>
> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>
> http://quality.livecode.com/show_bug.cgi?id=17795
>
>
> "Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
>
> Read the webcomic at [ http://www.atarmslength.net ]!
>
> If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Fraser Gordon-3
On 05/06/16 23:06, Jerry Jensen wrote:
> I just spent a few minutes in the 8.0.1 dictionary and did not find it. That thing is useless! Maybe its because I’m new to 8, but where is “any" documented? How in the world does one find it?
> .Jerry

https://livecode.com/resources/api/#livecode_script/any

I just entered "any" into the search field and there it was ;)

Fraser

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Dar Scott
In reply to this post by Jerry Jensen-2
I opened the dictionary.  I didn't need to select the API tab or the LiveCode Script API, those were selected.  I typed "any" in the search box, but did not hit return or click the search button.  A list containing "mobilPickMedia" showed up.  Right above it, all by itself so it can be lost, is the word "any".  I clicked on it and I got a description.

Of course, if one is learning the language...  Why would anybody think to look for "any"?



> On Jun 5, 2016, at 4:06 PM, Jerry Jensen <[hidden email]> wrote:
>
> I just spent a few minutes in the 8.0.1 dictionary and did not find it. That thing is useless! Maybe its because I’m new to 8, but where is “any" documented? How in the world does one find it?
> .Jerry
>
>> On Jun 5, 2016, at 2:50 PM, ** Clarence P Martin ** <[hidden email]> wrote:
>>
>> I feel that I am somewhere in another world.
>> Can someone please explain to me where the "Any Item" or even Just the command "Any" is documented? I can't seem to find this.
>> Sorry if this sounds like a stupid question, but when I see something that is new to me, I have to explore it and its uses.
>>
>> Sincerely,
>>
>> Clarence Martin
>> Email: [hidden email]
>> Cell: 626 6965561
>>
>> -----Original Message-----
>> From: use-livecode [mailto:[hidden email]] On Behalf Of Quentin Long
>> Sent: Sunday, June 05, 2016 7:12 AM
>> To: [hidden email]
>> Subject: Cubist's first bug report
>>
>> Code which exhibits the bug:
>>
>> on mouseUp
>>  put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>>  repeat 100 times
>>     add 1 to any item of Fred
>>     put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>  end repeat
>>  put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>> end mouseUp
>>
>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>
>> http://quality.livecode.com/show_bug.cgi?id=17795
>>
>>
>> "Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
>>
>> Read the webcomic at [ http://www.atarmslength.net ]!
>>
>> If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Fun (was Re: Cubist's first bug report)

Dar Scott
In reply to this post by [-hh]

> On Jun 5, 2016, at 2:26 PM, [-hh] <[hidden email]> wrote:
>
> And this, not this much funny, creates a CRASH (showing "inf"):
> on mouseUp
>  put "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" into myVar
>  repeat 1000
>    add 1 to item (any item of myVar) of myVar
>  end repeat
>  put  myVar into fld 1
> end mouseUp

I clicked on a button several times and didn't get a crash and didn't get an error, but eventually I did get a lockup that was impervious to command-period.  Ah, it just finished.  It must have been adding commas to make the zillionth item.  
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

RE: Cubist's first bug report

Clarence P Martin
In reply to this post by Dar Scott
Thanks Dar,
I also just found it. I guess I didn't see it because it is the first entry, at the top of the list, just as you noted. The old saying "Can't see the forest from the trees" is at play here.

Sincerely,

Clarence Martin
Email: [hidden email]
Cell: 626 6965561

-----Original Message-----
From: use-livecode [mailto:[hidden email]] On Behalf Of Dar Scott
Sent: Sunday, June 05, 2016 3:14 PM
To: How to use LiveCode <[hidden email]>
Subject: Re: Cubist's first bug report

I opened the dictionary.  I didn't need to select the API tab or the LiveCode Script API, those were selected.  I typed "any" in the search box, but did not hit return or click the search button.  A list containing "mobilPickMedia" showed up.  Right above it, all by itself so it can be lost, is the word "any".  I clicked on it and I got a description.

Of course, if one is learning the language...  Why would anybody think to look for "any"?



> On Jun 5, 2016, at 4:06 PM, Jerry Jensen <[hidden email]> wrote:
>
> I just spent a few minutes in the 8.0.1 dictionary and did not find it. That thing is useless! Maybe its because I’m new to 8, but where is “any" documented? How in the world does one find it?
> .Jerry
>
>> On Jun 5, 2016, at 2:50 PM, ** Clarence P Martin ** <[hidden email]> wrote:
>>
>> I feel that I am somewhere in another world.
>> Can someone please explain to me where the "Any Item" or even Just the command "Any" is documented? I can't seem to find this.
>> Sorry if this sounds like a stupid question, but when I see something that is new to me, I have to explore it and its uses.
>>
>> Sincerely,
>>
>> Clarence Martin
>> Email: [hidden email]
>> Cell: 626 6965561
>>
>> -----Original Message-----
>> From: use-livecode [mailto:[hidden email]] On
>> Behalf Of Quentin Long
>> Sent: Sunday, June 05, 2016 7:12 AM
>> To: [hidden email]
>> Subject: Cubist's first bug report
>>
>> Code which exhibits the bug:
>>
>> on mouseUp
>>  put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred  repeat 100 times
>>     add 1 to any item of Fred
>>     put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>  end repeat
>>  put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>> end mouseUp
>>
>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>
>> http://quality.livecode.com/show_bug.cgi?id=17795
>>
>>
>> "Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
>>
>> Read the webcomic at [ http://www.atarmslength.net ]!
>>
>> If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Fun (was Re: Cubist's first bug report)

Monte Goulding-2
In reply to this post by Dar Scott

> On 6 Jun 2016, at 6:06 AM, [hidden email] wrote:
>
>  I suspect that random(16) is being evaluated twice based on a first glance at the pattern.

I’ve taken a little look into it and yes it does appear the chunk is being evaluated twice:

Add left to right
  - get value to add by and evaluate chunk if any
  - get destination value and evaluate chunk if any
  - add
  - set destination value and evaluate chunk if any

So I think we can both fix this quirk and optimise things that mutate rather than replace the destination chunk (add, subtract, multiply, divide commands… are there others?) by setting the previously marked chunk rather than re-evaluating. Please submit a bug report so we can look into it further and work out whether I’m right or I just don’t know my way around the engine well enough yet ;-)

Cheers

Monte
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Cubist's first bug report

Jerry Jensen-2
In reply to this post by Clarence P Martin
I suspect that is what happened to me too. Now I see it. Embarrasing, me calling it useless. Apologies. I then got trapped in the filters and couldn’t get out.
.Jerry

> On Jun 5, 2016, at 3:45 PM, ** Clarence P Martin ** <[hidden email]> wrote:
>
> Thanks Dar,
> I also just found it. I guess I didn't see it because it is the first entry, at the top of the list, just as you noted. The old saying "Can't see the forest from the trees" is at play here.
>
> Sincerely,
>
> Clarence Martin
> Email: [hidden email]
> Cell: 626 6965561
>
> -----Original Message-----
> From: use-livecode [mailto:[hidden email]] On Behalf Of Dar Scott
> Sent: Sunday, June 05, 2016 3:14 PM
> To: How to use LiveCode <[hidden email]>
> Subject: Re: Cubist's first bug report
>
> I opened the dictionary.  I didn't need to select the API tab or the LiveCode Script API, those were selected.  I typed "any" in the search box, but did not hit return or click the search button.  A list containing "mobilPickMedia" showed up.  Right above it, all by itself so it can be lost, is the word "any".  I clicked on it and I got a description.
>
> Of course, if one is learning the language...  Why would anybody think to look for "any"?
>
>
>
>> On Jun 5, 2016, at 4:06 PM, Jerry Jensen <[hidden email]> wrote:
>>
>> I just spent a few minutes in the 8.0.1 dictionary and did not find it. That thing is useless! Maybe its because I’m new to 8, but where is “any" documented? How in the world does one find it?
>> .Jerry
>>
>>> On Jun 5, 2016, at 2:50 PM, ** Clarence P Martin ** <[hidden email]> wrote:
>>>
>>> I feel that I am somewhere in another world.
>>> Can someone please explain to me where the "Any Item" or even Just the command "Any" is documented? I can't seem to find this.
>>> Sorry if this sounds like a stupid question, but when I see something that is new to me, I have to explore it and its uses.
>>>
>>> Sincerely,
>>>
>>> Clarence Martin
>>> Email: [hidden email]
>>> Cell: 626 6965561
>>>
>>> -----Original Message-----
>>> From: use-livecode [mailto:[hidden email]] On
>>> Behalf Of Quentin Long
>>> Sent: Sunday, June 05, 2016 7:12 AM
>>> To: [hidden email]
>>> Subject: Cubist's first bug report
>>>
>>> Code which exhibits the bug:
>>>
>>> on mouseUp
>>> put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred  repeat 100 times
>>>    add 1 to any item of Fred
>>>    put Fred into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>> end repeat
>>> put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld "testbed"
>>> end mouseUp
>>>
>>> This handler *should* end up generating a 16-item string of integers which sum to exactly 100. What it *actually does* end up generating, is a 16-item string of integers whose sum may or may not fall somewhere within the range 80-120. Not sure what the hell is going on here, but I am not at all happy about it. Perhaps other people might like to try this code on their systems, and see if it works as intended for them?
>>>
>>> http://quality.livecode.com/show_bug.cgi?id=17795
>>>
>>>
>>> "Bewitched" + "Charlie's Angels" - Charlie = "At Arm's Length"
>>>
>>> Read the webcomic at [ http://www.atarmslength.net ]!
>>>
>>> If you like "At Arm's Length", support it at [ http://www.patreon.com/DarkwingDude ].
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> [hidden email]
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>>
>>> _______________________________________________
>>> use-livecode mailing list
>>> [hidden email]
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Fun (was Re: Cubist's first bug report)

mwieder
In reply to this post by Monte Goulding-2
On 06/05/2016 04:03 PM, Monte Goulding wrote:

> I’ve taken a little look into it and yes it does appear the chunk is being evaluated twice:

Yes, I believe that's the gist of LCMark's comment in the bug report.

Please submit a bug report so we can look into it further...

There are two bug reports on this already. Do you need a third?

--
  Mark Wieder
  [hidden email]

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
--
 Mark Wieder
 ahsoftware@gmail.com
12