Thanks to Jon Kirkman, who took last night's #pairwithme slot, we have the first keyboard shortcuts in the ICE Code Editor.
As the last feature that was slated for the Dart version of ICE, I think it is time to promote it to production at http://gamingjs.com/ice. For the past month, the beta version has resided at http://gamingjs.com/ice-beta and performed quite well by all accounts. I would like to push the keyboard shortcut commit to beta and will move to production tomorrow. But first…
I am going to revisit how I deploy the application. Nothing major here, there are two nagging problems that I hope to address. First, when I first pushed the Dart version out, I found that the minify option on the
dart2jstool did not work with my code (I suspect it could not work with the js-interop code). The other problem is that I may be packing too much in my application cache manifest file.
I start with
dart2js. I grab the most recent SDK from the Dart homepage:
➜ ice-code-editor git:(master) dart --version Dart VM version: 0.6.5.0_r25017 (Mon Jul 15 15:01:03 2013) on "linux_x64"In my gamingjs.com github repository, which is a GitHub pages repository, I update the package dependencies with Pub:
➜ ice-beta git:(gh-pages) ✗ pub update Resolving dependencies........... Downloading ice_code_editor 0.0.9 from hosted... Dependencies updated!Since this is going to be installed on GitHub pages, the normal symbolic links in Pub's
packagesdirectory are not going to work:
➜ ice-beta git:(gh-pages) ✗ cd packages ➜ packages git:(gh-pages) ✗ ls -l total 24 lrwxrwxrwx 1 chris chris 64 Jul 19 22:01 browser -> /home/chris/.pub-cache/hosted/pub.dartlang.org/browser-0.6.5/lib lrwxrwxrwx 1 chris chris 63 Jul 19 22:01 crypto -> /home/chris/.pub-cache/hosted/pub.dartlang.org/crypto-0.6.5/lib lrwxrwxrwx 1 chris chris 72 Jul 19 22:01 ice_code_editor -> /home/chris/.pub-cache/hosted/pub.dartlang.org/ice_code_editor-0.0.9/lib lrwxrwxrwx 1 chris chris 60 Jul 19 22:01 js -> /home/chris/.pub-cache/hosted/pub.dartlang.org/js-0.0.24/lib lrwxrwxrwx 1 chris chris 61 Jul 19 22:01 meta -> /home/chris/.pub-cache/hosted/pub.dartlang.org/meta-0.6.5/lib lrwxrwxrwx 1 chris chris 65 Jul 19 22:01 unittest -> /home/chris/.pub-cache/hosted/pub.dartlang.org/unittest-0.6.5/libI use my editor (Emacs) to convert that listing to a list of
cpcommands needed to convert then to real files:
➜ packages git:(gh-pages) ✗ rm * ➜ packages git:(gh-pages) ✗ cp -r /home/chris/.pub-cache/hosted/pub.dartlang.org/browser-0.6.5/lib browser ➜ packages git:(gh-pages) ✗ cp -r /home/chris/.pub-cache/hosted/pub.dartlang.org/crypto-0.6.5/lib crypto ➜ packages git:(gh-pages) ✗ cp -r /home/chris/.pub-cache/hosted/pub.dartlang.org/ice_code_editor-0.0.9/lib ice_code_editor ➜ packages git:(gh-pages) ✗ cp -r /home/chris/.pub-cache/hosted/pub.dartlang.org/js-0.0.24/lib js ➜ packages git:(gh-pages) ✗ cp -r /home/chris/.pub-cache/hosted/pub.dartlang.org/meta-0.6.5/lib meta ➜ packages git:(gh-pages) ✗ cp -r /home/chris/.pub-cache/hosted/pub.dartlang.org/unittest-0.6.5/lib unittestI really need to write a tool to do this, but I will leave that for another day.
➜ ice-beta git:(gh-pages) ✗ dart2js --minify -omain.dart.js main.dartI fire up a Jekyll server in my GitHub pages repository root:
➜ gamingjs git:(gh-pages) ✗ jekyll --auto --server Configuration from /home/chris/repos/gamingjs/_config.yml Auto-regenerating enabled: /home/chris/repos/gamingjs -> /home/chris/repos/gamingjs/_site [2013-07-19 22:14:41] regeneration: 474 files changed [2013-07-19 22:14:41] INFO WEBrick 1.3.1 [2013-07-19 22:14:41] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux] [2013-07-19 22:14:41] WARN TCPServer Error: Address already in use - bind(2) [2013-07-19 22:14:41] INFO WEBrick::HTTPServer#start: pid=18249 port=4000Then I fire up a non-Dart enabled browser (Chrome) to find...
There are no errors and the editor is working (keyboard shortcuts and all). It really does seem that, if something in the Dart world is not working properly, the best strategy is to wait a day or two.
Not only is it working, but the compiled main.dart.js file has gone from 910 KB to 312 KB. Obviously, that could be better, but it is much better than before. Plus it will be served with gzip encoding and will be app-cached so this is really exciting.
This seems a good stopping point for tonight. I will pick back up with improving my application cache deployment strategy (and possibly start tackling the automation of these things) tomorrow. For now, I can go to bed happy. Yay!