COSTUMES
SOUNDS
AWESOME
Now if only it worked. Really excited, Jens, keep it up!
Offline
@bharvey
"They use this complicated system so that if a web page downloads a virus or other malware, the encryption will turn it into gibberish that can't harm your system, and you can't accidentally copy it to someplace else where it might make trouble. "
You are correct. I suspected something like that.
I confirm that , as far as I am concerned, Copy the *htm file or the "complicated project link" does not work, neither with Chrome, nor Firefox.
Maybe the solution could be for Snap! to have an Import feature allowing to import into the Snap! Project list any project *.htm file (project sharing ). Probably that this is already in the pipeline.
Anyway in the meantime I've understood Chrome Downloads management and I've changed accordingly its parameters as to set up Chrome.exe and its Downloads folder onto a removable disk, as to save and "move" my Snap! projects (from one Pc to another)
Offline
Jens wrote:
what did you try to save, an empty custom block?
yes, one of the custum blocks was empty. I pressed save again and it saved but i copied the xml into notepad and got this:
<project name="streams" version="1"> <notes></notes> <thumbnail> data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAADKUlEQVR4Xu3XsU2jYRAE0J8+HBKQuBMSyF0DxbgHJwQkboTMkQM34jsscdKdLuF3MCvNc4j4vLszT0I8XH9/Fh8JhBJ4ADCUvLG3BAAEIZoAgNH4DQeQgWgCAEbjNxxABqIJABiN33AAGYgmAGA0fsMBZCCaAIDR+A0HkIFoAgBG4zccQAaiCQAYjd9wABmIJgBgNH7DAWQgmgCA0fgNB5CBaAIARuM3HEAGogkAGI3fcAAZiCYAYDR+wwFkIJoAgNH4DQeQgWgCAEbjNxxABqIJABiN33AAGYgmAGA0fsMBZCCaAIDR+A0HkIFoAgBG4zccQAaiCQAYjd9wABmIJgBgNH7DAWQgmgCA0fgNB5CBaAIARuM3HEAGogkAGI3fcAAZiCYAYDR+wwFkIJoAgNH4DQeQgWgCAEbjNxxABqIJABiN33AAGYgmAGA0fsMBZCCaAIDR+A0HkIFoAgDeEf/z8/Pt9fF4vONbup8CeEf/r6+vy/V6XT4+Pu74lu6nAN7R/8vLy+01gOtDBHBldpfLZXl7e7u93u/3y2azWflN3c8AXNn/drtdHh8fb6/P5/Py+fm58pu6nwG4sv/vP7/fz/0ZXhckgOtyWwBcGdw/zwBckeP7+/tyOBz+/PPxhXG32y1f/xX7/CwBAH+W1+23n56eltPp9NfL//1sxVfXPQGwrvJZBwM4q4+6bQCsq3zWwQDO6qNuGwDrKp91MICz+qjbBsC6ymcdDOCsPuq2AbCu8lkHAzirj7ptAKyrfNbBAM7qo24bAOsqn3UwgLP6qNsGwLrKZx0M4Kw+6rYBsK7yWQcDOKuPum0ArKt81sEAzuqjbhsA6yqfdTCAs/qo2wbAuspnHQzgrD7qtgGwrvJZBwM4q4+6bQCsq3zWwQDO6qNuGwDrKp91MICz+qjbBsC6ymcdDOCsPuq2AbCu8lkHAzirj7ptAKyrfNbBAM7qo24bAOsqn3UwgLP6qNsGwLrKZx0M4Kw+6rYBsK7yWQcDOKuPum0ArKt81sEAzuqjbhsA6yqfdTCAs/qo2wbAuspnHQzgrD7qtgGwrvJZBwM4q4+6bX4BUCoLt5Kt9+4AAAAASUVORK5CYII= </thumbnail> <stage costume="0" id="0"> <variables> <ref id="1"></ref> </variables> <media></media> <blocks> <ref id="2"></ref> </blocks> <scripts> <ref id="3"></ref> </scripts> <sprites> <ref id="4"></ref> </sprites> </stage> <variables></variables> </project>
Only a bunch of references to other objects which don't exist, and opening it gave me nothing but a blank stage.
Offline
xly wrote:
Maybe the solution could be for Snap! to have an Import feature allowing to import into the Snap! Project list any project *.htm file (project sharing ). Probably that this is already in the pipeline.
As I understand it, if you go "Save page" in Firefox or Chrome, the resulting .htm file will not contain any of the project files, seeing as they're in localStorage and so stored with the rest of the browser's files.
Offline
roijac wrote:
what about making a ff extension and ship snap! with firefox in some presentation mode or whatever, like the tor guys do?
Sounds like a huge download. But we have several ideas in the pipeline, including waiting for all the browsers to implement the HTML5 extension that allows storing to the real filesystem. (Another is an upload-based solution... no details yet, but stay tuned.)
Offline
Saving/Loading issues.
For the time being, using Chrome It is possible to Save/Reload/Carry projects using Download feature on a "removable folder". But Snap! *.htm files not saved directly by Chrome "Downloads" itself can't be reloaded any.
When one current project is saved by Chrome, when reloaded all the Snap! projects "registered" by Snap! are still available.
I've noticed that Chrome owns one "chirp" cookie. What for ? I've noticed in the past that if you clean all Chrome cookies your Snap! projects are lost !!
I have no doubt that one reliable Save/Load/Import feature will be set up. It's nothing compared to what has already been achieved by Snap! (very small) team !
Offline
xly wrote:
I've noticed in the past that if you clean all Chrome cookies your Snap! projects are lost !!
When you tell your browser to clear cookies it also clears local storage,
which is considered just like a cookie but without the size limitation of cookies.
I don't think the chirp cookie has anything to do with Snap! projects. You probably once left a comment on Jens's blog.
Offline
@bharvey
"When you tell your browser to clear cookies it also clears local storage,
which is considered just like a cookie but without the size limitation of cookies."
What I've understood and not understood !
I have a dozen of projects registered by Snap!. Then I create a simple new one with only one block, say "square". I save this project with Chrome. I get into Chrome Downloads folder one *htm page which gives the javascript transcription of this project only + js libraries.
Later on, still using Chrome I reload this square.htm page. The "square" project is immediately loaded ... OK . But surprisingly all other registered Snap! projects are still available. It means that each individual project htm page has a link to all Snap! existing projects !!
My question is : "Where and how does the browser store the js structure of all Snap projects ? "
Offline
Chrome - Project Management
Many Chrome Folder/files are related to Snap! See for example ..\Chrome\User Data\Default\Cache where you can find Jens JS libraries + one file dealing with Snap! projects.See also Loacal Storage, Last Tabs and many others ! It's a mess !!
Offline
Offline
xly wrote:
I save this project with Chrome. I get into Chrome Downloads folder one *htm page which gives the javascript transcription of this project only + js libraries.
No, there is no .htm page that contains the project. There's just nasciturus.html which is the same for everyone. The URL encodes your project.
All your projects are stored in Chrome's "local storage" which is, by design, not visible to you outside of the browser, or on any web page other than the one where you made it.
Offline
roijac wrote:
Hey guys, why not try to make the ST believe in first-class lists?
Ah, you think we haven't tried? One problem is that it's not that useful a feature unless you also have custom reporters. Another is that you have to deal with the possibility of circular data structures.
Offline
bharvey wrote:
One problem is that it's not that useful a feature unless you also have custom reporters.
I thought they were adding BYOB, weren't they?
bharvey wrote:
Another is that you have to deal with the possibility of circular data structures.
That's only true if you use references and not objects. If it automatically copies the the list when embedding it and only passes by reference as argument, (like BYOB/Snap! does...) it works just fine.
Offline
roijac wrote:
I thought they were adding BYOB, weren't they?
They are adding custom commands, not custom reporters. They have a reason for this distinction, having to do with maintaining their concurrency model, which relies on bounded-time behavior of expressions.
If it automatically copies the the list when embedding it and only passes by reference as argument, (like BYOB/Snap! does...) it works just fine.
Your parenthetical comment isn't true. Try making a BYOB list called FOO,
then say
ADD "thing" TO FOO
ADD (FOO) TO FOO
ITEM (1) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (FOO))))
You'll get the answer "thing" because the second item of FOO is FOO itself, not a copy of it. If it were a copy, the second ADD above would run forever.
But note that BYOB can't display FOO! That would also run forever, unless we invented an explicit notation for circular pointers.
Last edited by bharvey (2012-03-19 16:49:33)
Offline
bharvey wrote:
If it were a copy, the second ADD above would run forever.
Not if it copies what is in foo into a list and then adds that to foo so foo would be
list(
(thing)
(list(
(thing)
)
)
Offline
joefarebrother wrote:
Not if it copies what is in foo into a list and then adds that to foo so foo would be
list( (thing) (list( (thing) ) )
But it's not just two levels deep! You can say
ITEM (1) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (FOO))))))))))
and you'll still get the (correct) answer "thing"!
Offline
bharvey wrote:
roijac wrote:
I thought they were adding BYOB, weren't they?
They are adding custom commands, not custom reporters. They have a reason for this distinction, having to do with maintaining their concurrency model, which relies on bounded-time behavior of expressions.
If it automatically copies the the list when embedding it and only passes by reference as argument, (like BYOB/Snap! does...) it works just fine.
Your parenthetical comment isn't true. Try making a BYOB list called FOO,
then say
ADD "thing" TO FOO
ADD (FOO) TO FOO
ITEM (1) OF (ITEM (2) OF (ITEM (2) OF (ITEM (2) OF (FOO))))
You'll get the answer "thing" because the second item of FOO is FOO itself, not a copy of it. If it were a copy, the second ADD above would run forever.
But note that BYOB can't display FOO! That would also run forever, unless we invented an explicit notation for circular pointers.
didn't actually notice it...
anyway, what's so bad about three dots?
edit: after some thinking, i think the most elegant solution is to make nested lists more explicit 'referenced': make the name of the list and a plus sign by the side, and make blocks like 'decollapse item %n of %list', so you can explicit see its referencing and not storing the list
of course they are some garbage collecting problems, though
Last edited by roijac (2012-03-20 09:11:57)
Offline
Hey guys, check this out! It's a simple Scratch implementation which does use the DOM stuff for text boxes, etc. (I thought you might want to check it out considering your reluctance towards the local DOM widgets).
Also, I was thinking about making sounds first-class while you're at it. Suddenly you open the gates to blocks (reporters) like:
(rewind [sound]) (():() to ():() of [sound]) [play [sound]] [play [sound] and wait] [join [sound] [sound]] (sound []) // sound dropdown from Sounds tab
The sound inserter could be like the Gobo (object), but a musical not on top of it.
Just a thought.
PS Excuse typos, please, I'm typing with one hand with a drink in the other.
Offline
Hardmath123 wrote:
It's a simple Scratch implementation which does use the DOM stuff for text boxes, etc.
It's Jens who's reluctant to use the DOM, so I'll leave this part for him.
Also, I was thinking about making sounds first-class while you're at it.
Yes, of course, probably not in 4.0 but when we have first class costumes we'll have first class sounds too.
PS Excuse typos, please, I'm typing with one hand with a drink in the other.
Oh, no, someone who does think "BYOB" means "bring your own..."
Offline
bharvey wrote:
PS Excuse typos, please, I'm typing with one hand with a drink in the other.
Oh, no, someone who does think "BYOB" means "bring your own..."
xD
Offline