From 36921f7644dd8e6eaec44dfbb8d7698b7bb964e8 Mon Sep 17 00:00:00 2001 From: Matt Lott <mattlott@live.com> Date: Tue, 6 Jan 2015 10:53:32 -0800 Subject: [PATCH 1/3] Fix IE9 script loading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Script tags weren’t loading sequentially. IE9 doesn’t support the defer attribute: https://github.com/h5bp/lazyweb-requests/issues/42 Conditional comments: http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx Breaking change: https://github.com/codecombat/codecombat/commit/b698745e0505857ef8a21de9 fa2729ff5ab473ce --- app/assets/main.html | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/assets/main.html b/app/assets/main.html index 810cf0cf9..3bb759a1f 100644 --- a/app/assets/main.html +++ b/app/assets/main.html @@ -28,11 +28,20 @@ <link rel="shortcut icon" href="/images/favicon.ico"> <link rel="stylesheet" href="/stylesheets/app.css"> + <!-- IE9 doesn't support defer attribute: https://github.com/h5bp/lazyweb-requests/issues/42 --> + <!--[if IE 9]> + <script src="/lib/ace/ace.js"></script> + <script src="/javascripts/box2d.js"></script> + <script src="/javascripts/vendor.js"></script> + <script src="/javascripts/aether.js"></script> + <script src="/javascripts/app.js"></script> + <![endif]--> + <![if (gt IE 9)|(!IE)]> <script src="/lib/ace/ace.js" defer></script> - <!--[if IE 9]><script src="/javascripts/box2d.js"></script><![endif]--> <script src="/javascripts/vendor.js" defer></script> <script src="/javascripts/aether.js" defer></script> <script src="/javascripts/app.js" defer></script> <!-- it's all Backbone! --> + <![endif]> <script> // Placeholder for iPad, which inspects the user object at the bottom of an injected page. From 677ba56ce9a0856f0c2c461ba41f534b03579f24 Mon Sep 17 00:00:00 2001 From: Nick Winter <livelily@gmail.com> Date: Tue, 6 Jan 2015 12:40:10 -0800 Subject: [PATCH 2/3] Make sure to save level sessions after difficulty increase. --- app/models/CocoModel.coffee | 4 ++-- app/models/LevelSession.coffee | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/CocoModel.coffee b/app/models/CocoModel.coffee index e6f649bc4..e9a687882 100644 --- a/app/models/CocoModel.coffee +++ b/app/models/CocoModel.coffee @@ -19,10 +19,10 @@ class CocoModel extends Backbone.Model @on 'error', @onError, @ @on 'add', @onLoaded, @ @saveBackup = _.debounce(@saveBackup, 500) - @usesVersions = @schema().properties.version? + @usesVersions = @schema()?.properties?.version? backupKey: -> - if @usesVersions then @id else @id + ':' + @attributes.__v # TODO: doesn't work because __v doesn't actually increment? + if @usesVersions then @id else @id + ':' + @attributes.__v # TODO: doesn't work because __v doesn't actually increment. #2061 setProjection: (project) -> return if project is @project diff --git a/app/models/LevelSession.coffee b/app/models/LevelSession.coffee index cc30de4b8..cf8f21a45 100644 --- a/app/models/LevelSession.coffee +++ b/app/models/LevelSession.coffee @@ -59,6 +59,7 @@ module.exports = class LevelSession extends CocoModel state.difficulty = (state.difficulty ? 0) + 1 delete state.lastUnsuccessfulSubmissionTime @set 'state', state + @save() timeUntilResubmit: -> state = @get('state') ? {} From 9a3f18e60ae8ee4efb8b96c4464edf8e0455744d Mon Sep 17 00:00:00 2001 From: Nick Winter <livelily@gmail.com> Date: Tue, 6 Jan 2015 13:03:09 -0800 Subject: [PATCH 3/3] Save more UserCodeProblems and LevelSessions. --- app/lib/LevelBus.coffee | 4 ++-- app/views/play/level/tome/SpellView.coffee | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/lib/LevelBus.coffee b/app/lib/LevelBus.coffee index 750e5fbc1..adbf25c28 100644 --- a/app/lib/LevelBus.coffee +++ b/app/lib/LevelBus.coffee @@ -30,9 +30,9 @@ module.exports = class LevelBus extends Bus super(arguments...) @changedSessionProperties = {} if document.location.href.search('codecombat.com') isnt -1 - @saveSession = _.debounce(@reallySaveSession, 10000, {maxWait: 30000}) # Save us during HoC + @saveSession = _.debounce(@reallySaveSession, 4000, {maxWait: 10000}) # Save slower on production. else - @saveSession = _.debounce(@reallySaveSession, 1000, {maxWait: 5000}) # Not this fast during HoC + @saveSession = _.debounce(@reallySaveSession, 1000, {maxWait: 5000}) # Save quickly in development. @playerIsIdle = false init: -> diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index cde4b7ecc..7f0e3465d 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -733,9 +733,6 @@ module.exports = class SpellView extends CocoView hashValue = aether.raw + aetherProblem.message return if hashValue of @savedProblems @savedProblems[hashValue] = true - if Math.random() > 0.01 - # Let's only save a tiny fraction of these during HoC to reduce writes. - return # Save new problem @userCodeProblem = new UserCodeProblem()