QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

classic Classic list List threaded Threaded
70 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
Hi Dimitri

You’ve done everything right but I’ve realised my mistake is that it’s not just the database any more, it’s the transpiled code is specific to each target and that it what’s taking the time.  So the correct solution is that I must change QxCompiler to that several applications can be built within one target directory.

This won’t be a probem, but I don’t think I will have time to do it today; I should be able to sort it out this weekend though

BTW, all the classes have to be transpiled for every build; this is because although we know that in reality, Qooxdoo and all the contribs are all ES5 that could change so we have to assume they’re all ES6.  Plus there is code removal (eg removing qx.debug variants for build target) and we inject dependency information for use during the boot loader (although that could be refactored)

John


On 18/02/2016, 17:51, "Dimitri" <[hidden email]> wrote:

>John,
>
>I gave it a shot, but not sure if I did it right. In create-app-
>demo.js, I adjusted dbFilename to point to absolute location in /tmp.
>First time compilation took ~30 seconds. Then I removed source-output,
>as if it were a clean checkout, tried to recompile and observed no
>speed-up at all.
>
>It suddenly came to my mind: does Babel transpile all the (required)
>qooxdoo classes each time? I think it's a redundant step since qooxdoo
>itself is pretty much ES5 compliant.
>
>I'm not a Node.js pro (I'm a JavaEE architect in fact :) so I'm not
>experienced in profiling Node applications. It would be nice if some
>verbose output (with timings) was produced by QxCompiler, as a poor
>man's profiling facility :)
>
>Dimitri
>
>P.S. Sorry for "practise" instead of "practice", I usually don't do
>such stupid mistakes. I even looked it up in the dictionary before
>writing a message, but finally screwed everything up :-D
>
>> No problem; the next release will have a dbFilename property on
>> qxcompiler.makers.Maker, so compile-app-demo.js now has this:
>> // Makers use an Analyser to figure out what the Target should write
>> var maker = new qxcompiler.makers.SimpleApp("qxt.Application",
>> "qxt.theme.Theme").set({
>>   // Targets know how to output an application
>>   target: new
>> qxcompiler.targets.SourceTarget("../testdata/qxt/source-output"),
>>   locales: [ "en", "es" ],
>>   dbFilename: "my-qxcompiler-db.json"
>> });
>> dbFilename is relative to the target output dir, or it can be
>> absolute.
>>
>> John
>>
>> On 18/02/2016, 11:16, "Dimitri" <[hidden email]> wrote:
>>
>> Feature request: shared cache
>> =============================
>>
>> It's common practise in continuous integration that CI server does a
>> clean checkout per each build. Incremental builds are common practise
>> too, but they can be unreliable and problematic, especially for
>> complex
>> builds.
>>
>> At the moment, QxCompiler maintains a per-project cache that is
>> populated on first compilation. This might take significant time (up
>> to
>> 1 minute; subsequent builds are incredibly fast though). Original
>> qooxdoo generator solves this by using platform-wide cache, usually
>> in
>> $TMPDIR/qx{version}/cache. This also speeds up compilation if there
>> are
>> several projects using the same qooxdoo version.
>>
>> It would be nice if QxCompiler supported shared cache in the same
>> manner. Please mind that configurable cache path is important.
>> Hardcoded $TMPDIR/smth works bad, because on modern Linux distros
>> $TMPDIR lives in ramdisk and is cleared at each boot.
>>
>> Dimitri
>>
>> Hi all
>> There is a first release of my QxCompiler that adds ES6 to Qooxdoo
>> applications and replaces the generate.py toolchain with a faster,
>> 100% Javascript tool that is easily extensible.
>> You can find the first release at GitHub here: https://github.com/joh
>> nspackman/qxcompiler
>> It’s an alpha release, but something that’s been in development for a
>> while now and which I’m starting to build into my production
>> servers.  
>> I’m very open to pull requests or collaboration, and keen to see this
>> become a useful tool for myself as well as others so any questions
>> etc please ask.
>> Regards
>> John
>> -------------------------------------------------------------------
>> -----------
>> Site24x7 APM Insight: Get Deep Visibility into Application
>> Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>> -------------------------------------------------------------------
>> -----------
>> Site24x7 APM Insight: Get Deep Visibility into Application
>> Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>> -------------------------------------------------------------------
>> -----------
>> Site24x7 APM Insight: Get Deep Visibility into Application
>> Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
>------------------------------------------------------------------------------
>Site24x7 APM Insight: Get Deep Visibility into Application Performance
>APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>Monitor end-to-end web transactions and take corrective actions now
>Troubleshoot faster and improve end-user experience. Signup Now!
>http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>_______________________________________________
>qooxdoo-devel mailing list
>[hidden email]
>https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by mitya
Hi Dimitri

I’ve put it on the todo list to make .babelrc enable-able globally, probably as part of the Maker, so that should be done this weekend too

I did try Nashorn but I had non-trivial issues that I needed to look into - for example, I have a Rhino debugger I’ve written (think node-inspector, but my one is rhino-inspector) and I have to have server side debugging.  I couldn’t find much information on how to connect to Nashorn for remote debugging, so couldn’t write a new debugger.

(Rhino-inspector was something I was going to open source at one time but with Nashorn coming on the scene I wondered whether there was any point)

Another problem I had was with Java 8 - trying to use Rhino in Java 8 caused conflicts with Rhino’s implementation of arrays vs Java8, because Rhino attempts to integrate the Java class with Javasacript and there are method conflicts.  Again, it looked non-trivial and so I had to put it to one side and am sticking with Java 7 for now.

John





On 18/02/2016, 16:28, "Dimitri" <[hidden email]> wrote:

>John,
>
>Tried recent version, everything seems to work now. .babelrc's are
>ignored; it's no longer needed to symlink node_modules to the app and
>contribs directories, "npm link async" in the project dir is
>sufficient. However, I have to admit that .babelrc/.babelignore is a
>useful mechanism, since (if it worked properly) it would allow to use
>different Babel settings, or completely disable it, on a per-directory
>basis. Ideally, the compiler should honour .babelrc/.babelignore *and*
>pull all the presets and plugins from a single location, be it
>qxcompiler/node_modules or /usr/lib/node_modules (as soon as NPM
>packaging is ready).
>
>Re: database path - well done! is it safe to use a single shared db
>file for a set of projects + particular qooxdoo version (provided that
>no parallel compilations occur)?
>
>Wow, we are only one step away from production :) It will be pretty
>easy for us to migrate to QxCompiler, since our setup is much simpler
>than yours. It's a real-time communication application with pure JavaEE
>backend and qooxdoo RIA frontend, so no (yet) JavaScript on server
>side.
>
>Slightly offtopic: did you try Nashorn with your server-side? Should be
>much faster and feature-rich. Besides, we are planning an opensource
>project - JavaScript console for JavaEE with qooxdoo frontend a la
>Playground. It would allow to author/run/manage server-side scripts,
>with support for CDI injections, scheduled execution, user/system
>script library etc. I'd like to ask you (and everyone else here) to let
>me know if you're interested.
>
>Dimitri
>
>> Hi Dimitri
>>
>> Well done for finding that, what a nightmare.  I think I’ve found how
>> to disable the .babelrc, but I think the real issue is a bug in Babel
>> with presets; whatever, the fix is to not use presets and load the
>> plugins individually which is what I’ve done and I’ve just pushed it
>> up.  Please can you reinstate your .babelrc’s and see if this solves
>> it?
>>
>> This release includes the custom database path; translations I’ll get
>> back onto later on today (I’m a bit behind on my schedule)
>>
>> That’s great that your using this in production, you’re beating me to
>> it in mine!
>>
>> Cheers
>> John
>>
>> From: Dimitri <[hidden email]>
>> Reply-To: qooxdoo Development <[hidden email]>
>> Date: Thursday, 18 February 2016 at 08:16
>> To: <[hidden email]>
>> Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
>> compilation, and 100% Javascript API to building applications
>>
>> John,
>>
>> This turns to be one of that "bug reports that you like to hear" ;)
>> I've identified the culprit, it was .babelrc in my home dir. We were
>> totally wrong in that Babel ignores .babelrc in embedded mode. In
>> fact, it looks for it *everywhere*:
>>
>> [mitya@localhost test]$ strace node ./compile-app-demo.js 2>&1 | grep
>> babelrc
>> access("/home/mitya/qxcompiler/testdata/qxt/source/class/qxt/.babelrc
>> ", F_OK) = -1 ENOENT (No such file or directory)
>> access("/home/mitya/qxcompiler/testdata/qxt/source/class/.babelrc",
>> F_OK) = -1 ENOENT (No such file or directory)
>> access("/home/mitya/qxcompiler/testdata/qxt/source/.babelrc", F_OK) =
>> -1 ENOENT (No such file or directory)
>> access("/home/mitya/qxcompiler/testdata/qxt/.babelrc", F_OK) = -1
>> ENOENT (No such file or directory)
>> access("/home/mitya/qxcompiler/testdata/.babelrc", F_OK) = -1 ENOENT
>> (No such file or directory)
>> access("/home/mitya/qxcompiler/.babelrc", F_OK) = -1 ENOENT (No such
>> file or directory)
>> access("/home/mitya/.babelrc", F_OK)    = 0
>> open("/home/mitya/.babelrc", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 11
>>
>> After the file has been encountered, seems like it tries to resolve
>> presets/plugins relative to that file location.
>>
>> With that file removed, everything finally worked with qxt! But then
>> I tried to build my own project, and got similar error:
>>
>> /home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:393
>>           throw new Error("Couldn't find preset " +
>> JSON.stringify(val) + " relative to directory " +
>> JSON.stringify(dirname));
>>           ^
>>
>> Error: Couldn't find preset "es2015" relative to directory
>> "/home/mitya/Projects/foo/source/class/foo"
>>     at /home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:393:17
>>     at Array.map (native)
>>     at OptionManager.resolvePresets
>> (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:385:20)
>>     at OptionManager.mergePresets
>> (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:369:10)
>>     at OptionManager.mergeOptions
>> (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:328:14)
>>     at OptionManager.init (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:486:10)
>>     at File.initOptions (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/index.js:211:75)
>>     at new File (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/index.js:129:22)
>>     at Pipeline.transform (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/pipeline.js:48:16)
>>     at /home/mitya/qxcompiler/lib/qxcompiler/ClassFile.js:220:32
>>
>> This time no .babelrc files anywhere in the project structure.
>> Remember I earlier did "npm link async" in the project dir so that
>> build script would run. To get rid of this, I removed
>> foo/node_modules and symlinked qxcompiler/node_modules to the project
>> dir. Got yet another error, this time with UploadMgr:
>>
>> Error: Couldn't find preset "es2015" relative to directory
>> "/home/mitya/qooxdoo-
>> contrib/UploadMgr/source/class/com/zenesis/qx/upload"
>>     at /home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:393:17
>>     at Array.map (native)
>>     at OptionManager.resolvePresets
>> (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:385:20)
>>     at OptionManager.mergePresets
>> (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:369:10)
>>     at OptionManager.mergeOptions
>> (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:328:14)
>>     at OptionManager.init (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/options/option-manager.js:486:10)
>>     at File.initOptions (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/index.js:211:75)
>>     at new File (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/file/index.js:129:22)
>>     at Pipeline.transform (/home/mitya/qxcompiler/node_modules/babel-
>> core/lib/transformation/pipeline.js:48:16)
>>     at /home/mitya/qxcompiler/lib/qxcompiler/ClassFile.js:220:32
>>
>> With node_modules symlinked to qooxdoo-contrib/UploadMgr, finally
>> everything worked. This is easily reproducible if you move qxt
>> outside of QxCompiler dir, place build script inside qxt and adjust
>> paths accordingly (I used absolute paths).
>>
>> Transpiling and compression work just fine. Yet I've encountered a
>> small bug with translations. If a message is translated with
>> this.tr*() set of functions, everything works fine. If
>> qx.locale.Manager.tr() is used, such a message simply won't make it
>> into the build.
>> I think we should unconditionally transfer all the *.po strings into
>> the build, since translation in the app could be done based on
>> dynamic, computed values.
>>
>> I think that as soon as the remaining issues are fixed, QxCompiler
>> can be considered fairly stable. I'm already integrating it into our
>> build process.
>>
>> Cheers!
>> Dimitri
>>
>> > Hi Dimitri
>> >
>> > Sorry I realise now that was a rash suggestion, obviously it had to
>> > be in the test directory to work.
>> >
>> > I think there’s something odd with your installation because I’ve
>> > just switched to a Centos 6.5 VM that has never had node installed,
>> > installed Node 4, ImageMagick, cloned the QxCompiler repo, and run
>> > npm install.  I discovered a problem with package.json where babel-
>> > types wasn’t listed, but once I fixed that with "npm install babel-
>> > types —save” I was able to “cd test ; ./compile-app-demo.js” and
>> > get a working app, with resources and Bable transpiling.
>> >
>> > I tried Node 5 too on the same machine (deleting my ~/.npm,
>> > node_modules, and testdata/qxt/source-output directories first) and
>> > that also works for me; also the ./compile-app-demo-build.js
>> >
>> > If I list installed plugins I get:
>> > $ npm list | grep 2015
>> > ├─┬ babel-preset-es2015@6.5.0
>> > │ ├─┬ babel-plugin-check-es2015-constants@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-arrow-functions@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-block-scoped-functions@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-block-scoping@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-classes@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-computed-properties@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-destructuring@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-for-of@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-function-name@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-literals@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-modules-commonjs@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-object-super@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-parameters@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-shorthand-properties@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-spread@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-template-literals@6.5.2
>> > │ ├─┬ babel-plugin-transform-es2015-typeof-symbol@6.5.0
>> > │ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.5.0
>> >
>> > The array of plugins that was in QxCompiler previously was the
>> > equivalent of the es2015 preset, albeit the list was slightly out
>> > of date so updating the code to use a preset instead of plugins
>> > should only improve support, but you had it working with the preset
>> > yesterday so I don’t understand why it is not working now.
>> >
>> > Is it possible that you have Babel installed globally and it’s
>> > conflicting somehow?  I’ve updated the package.json at GitHub to
>> > explicitly reference babel-types, and rechecking out etc on my
>> > Centos 6 VM now runs without any complaints so it might be worth
>> > updating and trying again.
>> >
>> > Regards
>> > John
>> >
>> > From: Dimitri <[hidden email]>
>> > Reply-To: qooxdoo Development <[hidden email]>
>> > Date: Wednesday, 17 February 2016 at 23:02
>> > To: <[hidden email]>
>> > Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
>> > compilation, and 100% Javascript API to building applications
>> >
>> > [mitya@localhost qxcompiler]$ ./test/compile-app-demo.js
>> > Error: Error: ENOENT: no such file or directory, open
>> > '../testdata/qxt/Manifest.json'
>> >
>> >
>> > > Hmm - what happens if you change directory to the root of the
>> > > QxCompiler repo and run ./test/compile-app-demo.js?
>> > >
>> > > From: Dimitri <[hidden email]>
>> > > Reply-To: qooxdoo Development <[hidden email]
>> > > t>
>> > > Date: Wednesday, 17 February 2016 at 22:31
>> > > To: <[hidden email]>
>> > > Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
>> > > compilation, and 100% Javascript API to building applications
>> > >
>> > > No cigar this time :-\
>> > >
>> > > [mitya@localhost test]$ ./compile-app-demo.js
>> > > /home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:393
>> > >           throw new Error("Couldn't find preset " +
>> > > JSON.stringify(val) + " relative to directory " +
>> > > JSON.stringify(dirname));
>> > >           ^
>> > >
>> > > Error: Couldn't find preset "es2015" relative to directory
>> > > "/home/mitya"
>> > >     at /home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:393:17
>> > >     at Array.map (native)
>> > >     at OptionManager.resolvePresets
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:385:20)
>> > >     at OptionManager.mergePresets
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:369:10)
>> > >     at OptionManager.mergeOptions
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:328:14)
>> > >     at OptionManager.addConfig
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:234:10)
>> > >     at OptionManager.findConfigs
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:434:16)
>> > >     at OptionManager.init
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/options/option-manager.js:482:12)
>> > >     at File.initOptions
>> > > (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/index.js:211:75)
>> > >     at new File (/home/mitya/qxcompiler/node_modules/babel-
>> > > core/lib/transformation/file/index.js:129:22)
>> > >
>> > > Dunno why it looks for presets in my home dir. In my previous
>> > > experiment, everything went smooth (except that it didn't in fact
>> > > collect any qooxdoo deps, since I removed all plugins - but
>> > > transpiling itself went fine).
>> > >
>> > > As for uglify - ah, that was stupid. I used original uglify, not
>> > > uglify-js. Just tried the latter (2.6.1) - indeed, it takes ~10
>> > > secs for qxt. Not bad.
>> > >
>> > > В Ср, 17/02/2016 в 20:56 +0000, John Spackman пишет:
>> > > > Got it – it was a bug in my plugin I introduced a while ago,
>> > > > but Chrome obviously supports arrow functions natively so I
>> > > > didn’t pick up that the translation wasn’t happening any more.
>> > > >  The .babelrc is not needed for this because we’re using it
>> > > > embedded, I think the .babelrc is only for the CLI
>> > > >
>> > > > That’s very a good point about the polypill BTW because it’s
>> > > > not being included and it should be, I’ll add that in tomorrow.
>> > > >
>> > > > The problem with translations is fixed now too, sorry about
>> > > > that I should have deleted the output directory before
>> > > > retesting :oops:
>> > > >
>> > > > What options are you running Uglify with, and what version are
>> > > > you running?  I’m using "uglify boot.js -m -c”, I just timed it
>> > > > on mine and it’s mangled the qxt app in 11 seconds (I’m using
>> > > > uglify 2.6.1)  Still not great but better than 30 secs :)  I’ve
>> > > > nearly got Uglify done, but stopped for dinner and then saw
>> > > > your email so switched back.
>> > > >
>> > > > I’ve done the #! entries too
>> > > >
>> > > > I’ve pushed a new release, give it a go :)
>> > > >
>> > > > John
>> > > >
>> > > > From: Dimitri <[hidden email]>
>> > > > Reply-To: qooxdoo Development <[hidden email].
>> > > > net>
>> > > > Date: Wednesday, 17 February 2016 at 19:33
>> > > > To: <[hidden email]>
>> > > > Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
>> > > > compilation, and 100% Javascript API to building applications
>> > > >
>> > > > Just a quick follow-up on Babel - I've rolled back to
>> > > > yesterday's version, edited lib/qxcompiler/ClassFile.js:218,
>> > > > replaced that plugins array with presets: [ "es2015" ].
>> > > > Suddenly, it worked :)
>> > > > I'm still wondering why it doesn't try to look for any .babelrc
>> > > > file. It's clearly stated in the docs that the "babelrc" option
>> > > > is true by default. And it definitely would be good to have
>> > > > control over Babel via (optional) config file.
>> > > >
>> > > > Another issue to consider is that not every ES6 feature is
>> > > > implemented via code transformation. Some (ex., Promises)
>> > > > require babel-polyfill. (Mention in the docs? Integrate
>> > > > polyfill into build?)
>> > > >
>> > > > Dimitri
>> > > >
>> > > > > Hi John,
>> > > > >
>> > > > > That pace you're keeping, it's incredible :) Glad to hear
>> > > > > translations finally landed!
>> > > > >
>> > > > > Unfortunately, I couldn't make them work :(
>> > > > >
>> > > > > [mitya@localhost test]$ node compile-app-demo.js
>> > > > > [BABEL] Note: The code generator has deoptimised the styling
>> > > > > of
>> > > > > "/home/mitya/qxcompiler/qooxdoo/framework/source/class/qx/ui/
>> > > > > core/Widget.js" as it exceeds the max of "100KB".
>> > > > > 2016-02-17 21:30:13.229 [info ] makers          Writing
>> > > > > target Source Target: ../testdata/qxt/source-output/
>> > > > > /home/mitya/qxcompiler/lib/qxcompiler/targets/Target.js:239
>> > > > >               pkgdata.locales["C"] = db.cldr["en"];
>> > > > >                                             ^
>> > > > >
>> > > > > TypeError: Cannot read property 'en' of undefined
>> > > > >     at
>> > > > > /home/mitya/qxcompiler/lib/qxcompiler/targets/Target.js:239:4
>> > > > > 5
>> > > > >     at
>> > > > > /home/mitya/qxcompiler/node_modules/async/lib/async.js:718:13
>> > > > >     at async.forEachOf.async.eachOf
>> > > > > (/home/mitya/qxcompiler/node_modules/async/lib/async.js:233:1
>> > > > > 3)
>> > > > >     at _parallel
>> > > > > (/home/mitya/qxcompiler/node_modules/async/lib/async.js:717:9
>> > > > > )
>> > > > >     at Object.async.parallel
>> > > > > (/home/mitya/qxcompiler/node_modules/async/lib/async.js:731:9
>> > > > > )
>> > > > >     at
>> > > > > /home/mitya/qxcompiler/lib/qxcompiler/targets/Target.js:236:1
>> > > > > 5
>> > > > >     at /home/mitya/qxcompiler/lib/util.js:321:9
>> > > > >     at
>> > > > > /home/mitya/qxcompiler/node_modules/async/lib/async.js:52:16
>> > > > >     at
>> > > > > /home/mitya/qxcompiler/node_modules/async/lib/async.js:269:32
>> > > > >     at
>> > > > > /home/mitya/qxcompiler/node_modules/async/lib/async.js:44:16
>> > > > >
>> > > > > (removed qxcompiler dir & did clean checkout, didn't help
>> > > > > either)
>> > > > >
>> > > > > Re: Babel - sadly, didn't make it work either :( that arrow
>> > > > > function in qxt/Application.js goes unchanged first to
>> > > > > [source|build]-output/transpiled, then to [source|build]-
>> > > > > output/script. The same with string templates, etc. Note the
>> > > > > above [BABEL] message - that means, Babel is invoked, but
>> > > > > doesn't apply any actual transformations. I tried "strace -e
>> > > > > trace=open node compile-app-demo.js", and didn't see it open
>> > > > > .babelrc or any plugin and/or preset modules. Could you
>> > > > > please make sure it's indeed enabled? If it works for you,
>> > > > > could you please assist me in tracing/debugging (since I'm a
>> > > > > newbie in a Node world)?
>> > > > >
>> > > > > As for script compression, I played a bit with the standalone
>> > > > > uglify tool. Works pretty fine, but it takes ~30 seconds to
>> > > > > process a skeleton app. Do you think it can be sped up if
>> > > > > integrated into QxCompiler?
>> > > > >
>> > > > > Minor issue: test/*.js scripts could have a shebang string
>> > > > > (#!/usr/bin/node) and +x mode so that they could be run
>> > > > > directly, without typing "node ..." each time.
>> > > > >
>> > > > > Cheers!
>> > > > > Dimitri
>> > > > -------------------------------------------------------------
>> > > > ----------------- Site24x7 APM Insight: Get Deep Visibility
>> > > > into Application Performance APM + Mobile APM + RUM: Monitor 3
>> > > > App instances at just $35/Month Monitor end-to-end web
>> > > > transactions and take corrective actions now Troubleshoot
>> > > > faster and improve end-user experience. Signup Now! http://puba
>> > > > ds.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140__________
>> > > > _____________________________________ qooxdoo-devel mailing
>> > > > list qooxdoo-
>> > > > [hidden email]://lists.sourceforge.net/lists/
>> > > > listinfo/qooxdoo-devel
>> > > > -------------------------------------------------------------
>> > > > -----------------
>> > > > Site24x7 APM Insight: Get Deep Visibility into Application
>> > > > Performance
>> > > > APM + Mobile APM + RUM: Monitor 3 App instances at just
>> > > > $35/Month
>> > > > Monitor end-to-end web transactions and take corrective actions
>> > > > now
>> > > > Troubleshoot faster and improve end-user experience. Signup
>> > > > Now!
>> > > > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/414
>> > > > 0
>> > > > _______________________________________________
>> > > > qooxdoo-devel mailing list
>> > > > [hidden email]://lists.sourceforge.ne
>> > > > t/lists/listinfo/qooxdoo-devel
>> > > ---------------------------------------------------------------
>> > > --------------- Site24x7 APM Insight: Get Deep Visibility into
>> > > Application Performance APM + Mobile APM + RUM: Monitor 3 App
>> > > instances at just $35/Month Monitor end-to-end web transactions
>> > > and take corrective actions now Troubleshoot faster and improve
>> > > end-user experience. Signup Now! http://pubads.g.doubleclick.net/
>> > > gampad/clk?id=272487151&iu=/4140_________________________________
>> > > ______________ qooxdoo-devel mailing list qooxdoo-
>> > > [hidden email]://lists.sourceforge.net/lists/li
>> > > stinfo/qooxdoo-devel
>> > > ---------------------------------------------------------------
>> > > ---------------
>> > > Site24x7 APM Insight: Get Deep Visibility into Application
>> > > Performance
>> > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > > Monitor end-to-end web transactions and take corrective actions
>> > > now
>> > > Troubleshoot faster and improve end-user experience. Signup Now!
>> > > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> > > _______________________________________________
>> > > qooxdoo-devel mailing list
>> > > [hidden email]://lists.sourceforge.net/
>> > > lists/listinfo/qooxdoo-devel
>> > -----------------------------------------------------------------
>> > ------------- Site24x7 APM Insight: Get Deep Visibility into
>> > Application Performance APM + Mobile APM + RUM: Monitor 3 App
>> > instances at just $35/Month Monitor end-to-end web transactions and
>> > take corrective actions now Troubleshoot faster and improve end-
>> > user experience. Signup Now! http://pubads.g.doubleclick.net/gampad
>> > /clk?id=272487151&iu=/4140_________________________________________
>> > ______ qooxdoo-devel mailing list qooxdoo-
>> > [hidden email]://lists.sourceforge.net/lists/list
>> > info/qooxdoo-devel
>> > -----------------------------------------------------------------
>> > -------------
>> > Site24x7 APM Insight: Get Deep Visibility into Application
>> > Performance
>> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > Monitor end-to-end web transactions and take corrective actions now
>> > Troubleshoot faster and improve end-user experience. Signup Now!
>> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> > _______________________________________________
>> > qooxdoo-devel mailing list
>> > [hidden email]://lists.sourceforge.net/li
>> > sts/listinfo/qooxdoo-devel
>> -------------------------------------------------------------------
>> ----------- Site24x7 APM Insight: Get Deep Visibility into
>> Application Performance APM + Mobile APM + RUM: Monitor 3 App
>> instances at just $35/Month Monitor end-to-end web transactions and
>> take corrective actions now Troubleshoot faster and improve end-user
>> experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id
>> =272487151&iu=/4140_______________________________________________
>> qooxdoo-devel mailing list [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> -------------------------------------------------------------------
>> -----------
>> Site24x7 APM Insight: Get Deep Visibility into Application
>> Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
>------------------------------------------------------------------------------
>Site24x7 APM Insight: Get Deep Visibility into Application Performance
>APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>Monitor end-to-end web transactions and take corrective actions now
>Troubleshoot faster and improve end-user experience. Signup Now!
>http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>_______________________________________________
>qooxdoo-devel mailing list
>[hidden email]
>https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by mitya
BTW I missed you comment on this earlier - by profiling, do you mean of the compilation process or injecting profiling statements into the generated code?



On 18/02/2016, 17:51, "Dimitri" <[hidden email]> wrote:

>I'm not a Node.js pro (I'm a JavaEE architect in fact :) so I'm not
>experienced in profiling Node applications. It would be nice if some
>verbose output (with timings) was produced by QxCompiler, as a poor
>man's profiling facility :)



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

fritz
Hi John,

I understood it as a means to profile QxCompiler.  But even if Dimitri had
something else in mind, it probably would be useful to know where QxCompiler
spends most of it's time in order to focus on optimizing at the right place.

BWT, I am looking forward to trying QxCompiler myself, just didn't get
around to it yet.

Cheers,
Fritz

On Fri, 19 Feb 2016, John Spackman wrote:

> BTW I missed you comment on this earlier - by profiling, do you mean of
> the compilation process or injecting profiling statements into the
> generated code?
>
> On 18/02/2016, 17:51, "Dimitri" <[hidden email]> wrote:
>
>> I'm not a Node.js pro (I'm a JavaEE architect in fact :) so I'm not
>> experienced in profiling Node applications. It would be nice if some
>> verbose output (with timings) was produced by QxCompiler, as a poor
>> man's profiling facility :)
>
>
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

--
Oetiker+Partner AG              tel: +41 62 775 9903 (direct)
Fritz Zaucker                        +41 62 775 9900 (switch board)
Aarweg 15                            +41 79 675 0630 (mobile)
CH-4600 Olten                   fax: +41 62 775 9905
Schweiz                         web: www.oetiker.ch

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by mitya
>
>Slightly offtopic: did you try Nashorn with your server-side? Should be
>much faster and feature-rich. Besides, we are planning an opensource
>project - JavaScript console for JavaEE with qooxdoo frontend a la
>Playground. It would allow to author/run/manage server-side scripts,
>with support for CDI injections, scheduled execution, user/system
>script library etc. I'd like to ask you (and everyone else here) to let
>me know if you're interested.

Yes, I am - I want to move my server platform in that direction, so that I can modify code on the production server on the fly, but it’s quite a large development and not going to be capable of being split off into open source any time soon.  

Long term I want to move to more javascript on the server, and this could be node.js based but doing that would require a complete redevelopment of my server architecture; so an alternative might be to switch to Nashorn and run the node.js API on top of Nashorn.  This would be particularly cool if that meant that the core platform could run either in native node.js or be embedded with Java, because then there are two major types of users the project would appeal to.

IMHO there are a lots of benefits to this approach, eg having the Javascript architecture based on Qooxdoo will bring OO maturity that Java devs will appreciate, JS devs will be able to do end-to-end JS in ES6, and JavaEE devs will be able to add rapid scripting to their enterprise platform :)  Not to mention that asynchronous everything is an extremely scalable architecture, something that Java has traditionally been poor on.

One of the limitations that QxCompiler will solve is high speed incremental compilations and the ability to detect when the server needs to reload it’s VM so it’s a deliberate first step in this direction.

What do you think?  Lets keep chatting about it, how far along are your plans?

John



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by fritz
Hi Fritz
 
In that case that's easy ;) because there's no profiling info in QxCompiler at the moment, although I do keep an eye on overall compilation time; the two main costs are transpiling, because every source file in every library has to be transpiled, and the other is copying resources for the build target.  
 
It can be difficult to gauge timings without isolating parts of the app, although my guess is that a lot of this is probably file I/O; the actual Babel transpilation process is a notable exception in that it's completely synchronous and completely CPU bound
 
Initially, I wanted to keep the transpiled code local to each library but that isn't possible because some targets affect the output of the transpile stage, but that just means that it has to be cached by target rather than by library.
 
There's always room for improvement but overall I think it's quite fast given the work that it's doing, and the incremental compile for source targets is around 800ms on my laptop, but build target needs a bit of a once over because it around 6secs and it should be a lot faster if nothing's changed.
 
Cheers
John
 
 

From: "Fritz Zaucker" <[hidden email]>
Sent: Friday, February 19, 2016 8:42 AM
To: "qooxdoo Development" <[hidden email]>
Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications
 
Hi John,

I understood it as a means to profile QxCompiler. But even if Dimitri had
something else in mind, it probably would be useful to know where QxCompiler
spends most of it's time in order to focus on optimizing at the right place.

BWT, I am looking forward to trying QxCompiler myself, just didn't get
around to it yet.

Cheers,
Fritz

On Fri, 19 Feb 2016, John Spackman wrote:

> BTW I missed you comment on this earlier - by profiling, do you mean of
> the compilation process or injecting profiling statements into the
> generated code?
>
> On 18/02/2016, 17:51, "Dimitri" <[hidden email]> wrote:
>
>> I'm not a Node.js pro (I'm a JavaEE architect in fact :) so I'm not
>> experienced in profiling Node applications. It would be nice if some
>> verbose output (with timings) was produced by QxCompiler, as a poor
>> man's profiling facility :)
>
>
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

--
Oetiker+Partner AG tel: +41 62 775 9903 (direct)
Fritz Zaucker +41 62 775 9900 (switch board)
Aarweg 15 +41 79 675 0630 (mobile)
CH-4600 Olten fax: +41 62 775 9905
Schweiz web: www.oetiker.ch

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
 

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

mitya
John, Fritz,

Yes exactly - I was talking about profiling QxCompiler itself. At that
moment I was experimenting with shared database and was wondering why
it doesn't bring any speedup. I thought profiling would help to
understand where QxCompiler spends most time; later it turned to be
more fundamental issue.

I've experimented with a bit with incremental builds in our CI. So far,
I think incremental builds are fine for CI builds (triggered by
commits). That build directory isn't cleared each time didn't cause any
complications yet. It's not a problem that first build takes
significant time, it's only time of subsequent builds that matters.
It's also a good practice to perform clean builds for releases, but
slow release builds are quite acceptable since they don't occur
frequently.

However, I don't think efficient shared cache is impossible "by
design". I've looked into {qxt,myproject}/{source,build}-
output/transpiled/qx/*, did a byte-by-byte comparison and found that
*.js files are identical (therefore, they could probably be cached
across targets and libraries). Of course, there was difference in which
files were present, due to different dependencies.

(Besides, all the *.map files contain "null", are they really needed?)

Speaking of dependencies, I did some comparison between qxt and our
project:

Framework classes used: 283 vs. 378
Contribs: UploadMgr (both)
Uncompressed script: 4.8M vs. 6.4M
Compressed script (QxCompiler): 1.4M vs. 1.9M
Compressed script (generate.py): 700K vs. 1M

Definitely there is some room for optimization :)

John, sorry for delay in conversation. I'll be answering you on server-
side JS soon.

Dimitri

> Hi Fritz
>  
> In that case that's easy ;) because there's no profiling info in
> QxCompiler at the moment, although I do keep an eye on overall
> compilation time; the two main costs are transpiling, because every
> source file in every library has to be transpiled, and the other is
> copying resources for the build target.  
>  
> It can be difficult to gauge timings without isolating parts of the
> app, although my guess is that a lot of this is probably file I/O;
> the actual Babel transpilation process is a notable exception in that
> it's completely synchronous and completely CPU bound
>  
> Initially, I wanted to keep the transpiled code local to each library
> but that isn't possible because some targets affect the output of the
> transpile stage, but that just means that it has to be cached by
> target rather than by library.
>  
> There's always room for improvement but overall I think it's quite
> fast given the work that it's doing, and the incremental compile for
> source targets is around 800ms on my laptop, but build target needs a
> bit of a once over because it around 6secs and it should be a lot
> faster if nothing's changed.
>  
> Cheers
> John
>  
>  
> From: "Fritz Zaucker" <[hidden email]>
> Sent: Friday, February 19, 2016 8:42 AM
> To: "qooxdoo Development" <[hidden email]>
> Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster
> compilation, and 100% Javascript API to building applications
>  
> Hi John,
>
> I understood it as a means to profile QxCompiler. But even if Dimitri
> had
> something else in mind, it probably would be useful to know where
> QxCompiler
> spends most of it's time in order to focus on optimizing at the right
> place.
>
> BWT, I am looking forward to trying QxCompiler myself, just didn't
> get
> around to it yet.
>
> Cheers,
> Fritz
>
> On Fri, 19 Feb 2016, John Spackman wrote:
>
> > BTW I missed you comment on this earlier - by profiling, do you
> mean of
> > the compilation process or injecting profiling statements into the
> > generated code?
> >
> > On 18/02/2016, 17:51, "Dimitri" <[hidden email]> wrote:
> >
> >> I'm not a Node.js pro (I'm a JavaEE architect in fact :) so I'm
> not
> >> experienced in profiling Node applications. It would be nice if
> some
> >> verbose output (with timings) was produced by QxCompiler, as a
> poor
> >> man's profiling facility :)
> >
> >
> >
> > -----------------------------------------------------------------
> -------------
> > Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> > Monitor end-to-end web transactions and take corrective actions now
> > Troubleshoot faster and improve end-user experience. Signup Now!
> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> > _______________________________________________
> > qooxdoo-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
> --
> Oetiker+Partner AG tel: +41 62 775 9903 (direct)
> Fritz Zaucker +41 62 775 9900 (switch board)
> Aarweg 15 +41 79 675 0630 (mobile)
> CH-4600 Olten fax: +41 62 775 9905
> Schweiz web: www.oetiker.ch
>
> -------------------------------------------------------------------
> -----------
> Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>  
>  ------------------------------------------------------------------
> ------------
> Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

mitya
In reply to this post by John Spackman
John,

Seems like our projects have slightly different scope, but at the same time they'll definitely have much in common. We currently focus on JavaEE for our backend development, and radical paradigm change is unlikely in foreseeable future.

The key points of the forthcoming project will be:
- JSR-223 support, with Nashorn in mind first;
- CDI injection for scripts: @Inject, @Persistense{Context,Unit}, @Resource, @EJB;
- script execution: programmatic, manual/interactive, scheduled, on CDI event;
- interfaces: Java API, REST, GUI (a la Playground, most probably also qooxdoo+Ace.js based);
- script libraries: bundled with application (r/o) and user (r/w), managed with the same APIs.

Problems solved:
- experiment with real-world data, run JPQL queries live, make development more agile;
- implement fluid logic pattern, adjust business logic without recompilation and redeployment;
- do maintenance tasks and some simple analytic in real time.

As you see, this will be mainly a productivity tool for JavaEE developers, while your development (if I got it right) presumes completely new qooxdoo-with-Node-on-top-of-Nashorn solution.

However, I can already see some common points. Seems like CDI injections could be topical for you, too; at the same time, it's the most non-trivial tasks of the above. I would gladly continue the discussion, but I'm afraid we'll further pollute the ML. In particular, I wanted to know your opinion (as an experienced server-side JS user) on how to attach metadata to scripts (external file or embedded @-annotations).

Dimitri

P.S. Have you heard of WildFly's Undertow.js project? It's not exactly what either you or me are looking for, but we can borrow some ideas from it.



Slightly offtopic: did you try Nashorn with your server-side? Should be
much faster and feature-rich. Besides, we are planning an opensource
project - JavaScript console for JavaEE with qooxdoo frontend a la
Playground. It would allow to author/run/manage server-side scripts,
with support for CDI injections, scheduled execution, user/system
script library etc. I'd like to ask you (and everyone else here) to let
me know if you're interested.
Yes, I am - I want to move my server platform in that direction, so that I can modify code on the production server on the fly, but it’s quite a large development and not going to be capable of being split off into open source any time soon.  

Long term I want to move to more javascript on the server, and this could be node.js based but doing that would require a complete redevelopment of my server architecture; so an alternative might be to switch to Nashorn and run the node.js API on top of Nashorn.  This would be particularly cool if that meant that the core platform could run either in native node.js or be embedded with Java, because then there are two major types of users the project would appeal to.

IMHO there are a lots of benefits to this approach, eg having the Javascript architecture based on Qooxdoo will bring OO maturity that Java devs will appreciate, JS devs will be able to do end-to-end JS in ES6, and JavaEE devs will be able to add rapid scripting to their enterprise platform :)  Not to mention that asynchronous everything is an extremely scalable architecture, something that Java has traditionally been poor on.

One of the limitations that QxCompiler will solve is high speed incremental compilations and the ability to detect when the server needs to reload it’s VM so it’s a deliberate first step in this direction.

What do you think?  Lets keep chatting about it, how far along are your plans?

John



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
_______________________________________________
qooxdoo-devel mailing list

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

mitya
In reply to this post by John Spackman-3
Feature request: background recompiler + web server + reloader

In qooxdoo development, it's common practice to use a micro HTTP server to run applications, eg. python -m SimpleHTTPServer, generate.py source-server, editor/IDE embedded etc. This is because of limitations of file:/// addressing scheme and CORS/XHR issues that it has.
QxCompiler is going to introduce another background process for live code transpiling. Why not combining these two, so that the developer doesn't have to launch two separate processes?
It should be pretty easy to serve static contents from Node. In the future, automatic application reloading could be implemented, something that is available now with generate.py watch + source-server-reload jobs.

Dimitri

Hi all

There is a first release of my QxCompiler that adds ES6 to Qooxdoo applications and replaces the generate.py toolchain with a faster, 100% Javascript tool that is easily extensible.

You can find the first release at GitHub here: https://github.com/johnspackman/qxcompiler

It’s an alpha release, but something that’s been in development for a while now and which I’m starting to build into my production servers.  

I’m very open to pull requests or collaboration, and keen to see this become a useful tool for myself as well as others so any questions etc please ask.

Regards
John





------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
_______________________________________________
qooxdoo-devel mailing list

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

Adrian Haarbach-2
Concerning the webserver, I am using Grunt and the grunt-http-server plugin, which is based on node.js and much faster than python's SimpleHttpServer in serving files.
Also, it allows to specify a proxy where it redirects all requests it cannot resolve locally (e.g requests to tomcat). Really useful when developing the web part of an application while the backend runs somewhere remotely.

qooxdoo already comes with a package.json and Gruntfile.js by default now, I just edited them as below to make the webserver work:

package.json:
{
  "name": "project",
  "version": "0.1.0",
  "repository": {},
  "devDependencies": {
    "grunt": "~0.4.2",
    "grunt-http-server": "^1.13.0"
  }
  "license": "Apache-2.0"
}


Gruntfile.js:
module.exports = function(grunt) {
  grunt.initConfig({   
      'http-server': {
   
          'dev': {
   
              // the server root directory 
              root: ".",
   
              // the server port, can also be written as a function, e.g. 
              // port: function() { return 8282; } 
              port: 9999,
   
              // the host ip address 
              // If specified to, for example, "127.0.0.1" the server will only be available on that ip. 
              // Specify "0.0.0.0" to be available everywhere 
              host: "127.0.0.1",
   
              // server default file extension 
              ext: "html",
   
              // run in parallel with other tasks 
              runInBackground: false,
   
              // Proxies all requests which can't be resolved locally to the given url 
              // Note this this will disable 'showDir' 
              proxy: "http://mybackendserver.com",
          } 
      }
  });
  // // 3. Where we tell Grunt we plan to use this plug-in.
  grunt.loadNpmTasks('grunt-http-server');
  // // 4. Where we tell Grunt what to do when we type "grunt" into the terminal.
  grunt.registerTask('default', ['http-server:dev']);
};

Then to install all dependencies and run, just do:
npm install -g grunt-cli
npm install   //installs dependencies listed in package.json into node_modules folder
grunt //runs default http-server:dev job


The recompiler and reloader for dev jobs and additionally concatenator and uglifiers/minifiers for dist jobs can also be added as simple grunt tasks. There are lots of plugins for these tasks.

Looking forward to ditch ./generate.py in favor of a simple and faster grunt job!

Adrian


2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
Feature request: background recompiler + web server + reloader

In qooxdoo development, it's common practice to use a micro HTTP server to run applications, eg. python -m SimpleHTTPServer, generate.py source-server, editor/IDE embedded etc. This is because of limitations of file:/// addressing scheme and CORS/XHR issues that it has.
QxCompiler is going to introduce another background process for live code transpiling. Why not combining these two, so that the developer doesn't have to launch two separate processes?
It should be pretty easy to serve static contents from Node. In the future, automatic application reloading could be implemented, something that is available now with generate.py watch + source-server-reload jobs.

Dimitri

Hi all

There is a first release of my QxCompiler that adds ES6 to Qooxdoo applications and replaces the generate.py toolchain with a faster, 100% Javascript tool that is easily extensible.

You can find the first release at GitHub here: https://github.com/johnspackman/qxcompiler

It’s an alpha release, but something that’s been in development for a while now and which I’m starting to build into my production servers.  

I’m very open to pull requests or collaboration, and keen to see this become a useful tool for myself as well as others so any questions etc please ask.

Regards
John





------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
_______________________________________________
qooxdoo-devel mailing list

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
dev
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

dev
Adrian,

This is great. We have thought of using it instead of simple....
Now you have done the job. Is it possible to make it universal and into pull requestable files...?
We will put it on our todo list to exchange the simple python server...

Stefan

> Concerning the webserver, I am using Grunt and the grunt-http-server
> <https://www.npmjs.com/package/grunt-http-server> plugin, which is based on
> node.js and much faster than python's SimpleHttpServer in serving files.
> Also, it allows to specify a proxy where it redirects all requests it
> cannot resolve locally (e.g requests to tomcat). Really useful when
> developing the web part of an application while the backend runs somewhere
> remotely.
>
> qooxdoo already comes with a package.json and Gruntfile.js by default now,
> I just edited them as below to make the webserver work:
>
>
> *package.json:*
>
> {
>   "name": "project",
>   "version": "0.1.0",
>   "repository": {},
>   "devDependencies": {
>     "grunt": "~0.4.2",
>     "grunt-http-server": "^1.13.0"
>   }
>   "license": "Apache-2.0"
> }
>
>
>
> *Gruntfile.js:*
>
> module.exports = function(grunt) {
>   grunt.initConfig({
>       'http-server': {
>
>           'dev': {
>
>               // the server root directory
>               root: ".",
>
>               // the server port, can also be written as a function, e.g.
>               // port: function() { return 8282; }
>               port: 9999,
>
>               // the host ip address
>               // If specified to, for example, "127.0.0.1" the server will
> only be available on that ip.
>               // Specify "0.0.0.0" to be available everywhere
>               host: "127.0.0.1",
>
>               // server default file extension
>               ext: "html",
>
>               // run in parallel with other tasks
>               runInBackground: false,
>
>               // Proxies all requests which can't be resolved locally to
> the given url
>               // Note this this will disable 'showDir'
>               proxy: "http://mybackendserver.com",
>           }
>       }
>   });
>   // // 3. Where we tell Grunt we plan to use this plug-in.
>   grunt.loadNpmTasks('grunt-http-server');
>   // // 4. Where we tell Grunt what to do when we type "grunt" into the
> terminal.
>   grunt.registerTask('default', ['http-server:dev']);
> };
>
>
>
> *Then to install all dependencies and run, just do:*
>
> npm install -g grunt-cli
> npm install   //installs dependencies listed in package.json into
> node_modules folder
> grunt //runs default http-server:dev job
>
>
>
> The recompiler and reloader for dev jobs and additionally concatenator and
> uglifiers/minifiers for dist jobs can also be added as simple grunt tasks.
> There are lots of plugins for these tasks.
>
> Looking forward to ditch ./generate.py in favor of a simple and faster
> grunt job!
>
> Adrian
>
>
> 2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
>
>> Feature request: background recompiler + web server + reloader
>>
>> In qooxdoo development, it's common practice to use a micro HTTP server to
>> run applications, eg. python -m SimpleHTTPServer, generate.py
>> source-server, editor/IDE embedded etc. This is because of limitations of
>> file:/// addressing scheme and CORS/XHR issues that it has.
>> QxCompiler is going to introduce another background process for live code
>> transpiling. Why not combining these two, so that the developer doesn't
>> have to launch two separate processes?
>> It should be pretty easy to serve static contents from Node. In the
>> future, automatic application reloading could be implemented, something
>> that is available now with generate.py watch + source-server-reload jobs.
>>
>> Dimitri
>>
>> Hi all
>>
>> There is a first release of my QxCompiler that adds ES6 to Qooxdoo
>> applications and replaces the generate.py toolchain with a faster, 100%
>> Javascript tool that is easily extensible.
>>
>> You can find the first release at GitHub here:
>> https://github.com/johnspackman/qxcompiler
>>
>> It’s an alpha release, but something that’s been in development for a
>> while now and which I’m starting to build into my production servers.
>>
>> I’m very open to pull requests or collaboration, and keen to see this
>> become a useful tool for myself as well as others so any questions etc
>> please ask.
>>
>> Regards
>> John
>>
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>


> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140


> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

Adrian Haarbach-2
Hi Stefan,


Added grunt task source-server-nodejs to the grunt templates.
Now you have the choice between
grunt source-server -> python SimpleHttpServer
grunt source-server-nodejs -> node grunt-http-server

cheers,
Adrian

2016-02-22 18:44 GMT+01:00 <[hidden email]>:
Adrian,

This is great. We have thought of using it instead of simple....
Now you have done the job. Is it possible to make it universal and into pull requestable files...?
We will put it on our todo list to exchange the simple python server...

Stefan

> Concerning the webserver, I am using Grunt and the grunt-http-server
> <https://www.npmjs.com/package/grunt-http-server> plugin, which is based on
> node.js and much faster than python's SimpleHttpServer in serving files.
> Also, it allows to specify a proxy where it redirects all requests it
> cannot resolve locally (e.g requests to tomcat). Really useful when
> developing the web part of an application while the backend runs somewhere
> remotely.
>
> qooxdoo already comes with a package.json and Gruntfile.js by default now,
> I just edited them as below to make the webserver work:
>
>
> *package.json:*
>
> {
>   "name": "project",
>   "version": "0.1.0",
>   "repository": {},
>   "devDependencies": {
>     "grunt": "~0.4.2",
>     "grunt-http-server": "^1.13.0"
>   }
>   "license": "Apache-2.0"
> }
>
>
>
> *Gruntfile.js:*
>
> module.exports = function(grunt) {
>   grunt.initConfig({
>       'http-server': {
>
>           'dev': {
>
>               // the server root directory
>               root: ".",
>
>               // the server port, can also be written as a function, e.g.
>               // port: function() { return 8282; }
>               port: 9999,
>
>               // the host ip address
>               // If specified to, for example, "127.0.0.1" the server will
> only be available on that ip.
>               // Specify "0.0.0.0" to be available everywhere
>               host: "127.0.0.1",
>
>               // server default file extension
>               ext: "html",
>
>               // run in parallel with other tasks
>               runInBackground: false,
>
>               // Proxies all requests which can't be resolved locally to
> the given url
>               // Note this this will disable 'showDir'
>               proxy: "http://mybackendserver.com",
>           }
>       }
>   });
>   // // 3. Where we tell Grunt we plan to use this plug-in.
>   grunt.loadNpmTasks('grunt-http-server');
>   // // 4. Where we tell Grunt what to do when we type "grunt" into the
> terminal.
>   grunt.registerTask('default', ['http-server:dev']);
> };
>
>
>
> *Then to install all dependencies and run, just do:*
>
> npm install -g grunt-cli
> npm install   //installs dependencies listed in package.json into
> node_modules folder
> grunt //runs default http-server:dev job
>
>
>
> The recompiler and reloader for dev jobs and additionally concatenator and
> uglifiers/minifiers for dist jobs can also be added as simple grunt tasks.
> There are lots of plugins for these tasks.
>
> Looking forward to ditch ./generate.py in favor of a simple and faster
> grunt job!
>
> Adrian
>
>
> 2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
>
>> Feature request: background recompiler + web server + reloader
>>
>> In qooxdoo development, it's common practice to use a micro HTTP server to
>> run applications, eg. python -m SimpleHTTPServer, generate.py
>> source-server, editor/IDE embedded etc. This is because of limitations of
>> file:/// addressing scheme and CORS/XHR issues that it has.
>> QxCompiler is going to introduce another background process for live code
>> transpiling. Why not combining these two, so that the developer doesn't
>> have to launch two separate processes?
>> It should be pretty easy to serve static contents from Node. In the
>> future, automatic application reloading could be implemented, something
>> that is available now with generate.py watch + source-server-reload jobs.
>>
>> Dimitri
>>
>> Hi all
>>
>> There is a first release of my QxCompiler that adds ES6 to Qooxdoo
>> applications and replaces the generate.py toolchain with a faster, 100%
>> Javascript tool that is easily extensible.
>>
>> You can find the first release at GitHub here:
>> https://github.com/johnspackman/qxcompiler
>>
>> It’s an alpha release, but something that’s been in development for a
>> while now and which I’m starting to build into my production servers.
>>
>> I’m very open to pull requests or collaboration, and keen to see this
>> become a useful tool for myself as well as others so any questions etc
>> please ask.
>>
>> Regards
>> John
>>
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>


> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140


> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by mitya
There’s a new release that went out just before the translation mod that does the shared cache - although the source-output directory is currently very similar to build-output, this is only temporary because build options can change the code which is output.

This is primarily that calls to qx.core.Environment.get and .select are optimised out where QxCompiler or generate.py can know the outcome; for example, in build target where the qx.debug is set to false, QxCompiler can remove this code completely:
if (qx.core.Environment.get("qx.debug")) {
// ... snip ...
}
I think that this is a major difference in size between ./generate.py build target and the QxCompiler, because QxCompiler currently does not do the elimination.

NOTE: I have renamed qxcompiler.makers.SimpleApp to qxcompiler.makers.AppMaker to follow other naming conventions.

So in the changes I pushed earlier this evening, the AppMaker now supports making multiple Applications simultaneously – you can see an example in ./test/compile-app-demo.js and ./test/compile-app-demo-build.js:

maker.addApplication(new qxcompiler.Application("qxt.Application").set({
theme: "qxt.theme.Theme",
name: "appone",
environment: {
"qxt.applicationName": "App One"
}
}));
maker.addApplication(new qxcompiler.Application("qxt.Application").set({
theme: "qx.theme.Simple",
name: "apptwo",
environment: {
"qxt.applicationName": "App Two"
}
}));

For every Application you want to compile, just add a new instance of qxcompiler.Application; the first parameter to the constructor is the main class name for the application.  You specify the theme as a property, and note the new “name” property – previously, one application related to an “index.html” file that loaded files from the “script” folder, whereas in this new release the name property is used to name both the .html file and the script folder, so each application needs a unique name.

In the example above, the two applications differ just in theme but because they share the same output directory, the overhead of second application adds around 400ms on my laptop when compared to just the one application.

This might not be exactly what you were expecting when compared to generate.py because entire applications can be sent out into different directory trees?  If it’s necessary to have separate dircetory trees per application, then either the transpiled code would need to be copied to each destination tree or there would need to be a URI for transpiled code and another for the application.

Anyway, see how you get on :)

Cheers
John

On 21/02/2016, 19:23, "Dimitri" <[hidden email]> wrote:

John, Fritz,

Yes exactly - I was talking about profiling QxCompiler itself. At that
moment I was experimenting with shared database and was wondering why
it doesn't bring any speedup. I thought profiling would help to
understand where QxCompiler spends most time; later it turned to be
more fundamental issue.

I've experimented with a bit with incremental builds in our CI. So far,
I think incremental builds are fine for CI builds (triggered by
commits). That build directory isn't cleared each time didn't cause any
complications yet. It's not a problem that first build takes
significant time, it's only time of subsequent builds that matters.
It's also a good practice to perform clean builds for releases, but
slow release builds are quite acceptable since they don't occur
frequently.

However, I don't think efficient shared cache is impossible "by
design". I've looked into {qxt,myproject}/{source,build}-
output/transpiled/qx/*, did a byte-by-byte comparison and found that
*.js files are identical (therefore, they could probably be cached
across targets and libraries). Of course, there was difference in which
files were present, due to different dependencies.

(Besides, all the *.map files contain "null", are they really needed?)

Speaking of dependencies, I did some comparison between qxt and our
project:

Framework classes used: 283 vs. 378
Contribs: UploadMgr (both)
Uncompressed script: 4.8M vs. 6.4M
Compressed script (QxCompiler): 1.4M vs. 1.9M
Compressed script (generate.py): 700K vs. 1M

Definitely there is some room for optimization :)

John, sorry for delay in conversation. I'll be answering you on server-
side JS soon.

Dimitri

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by Adrian Haarbach-2
Hi Adrian

Then to install all dependencies and run, just do:
npm install -g grunt-cli
npm install   //installs dependencies listed in package.json into node_modules folder
grunt //runs default http-server:dev job

 Looking forward to ditch ./generate.py in favor of a simple and faster grunt job!

That sounds really cool - I don’t have any experience with grunt but that’s definitely the right progression; any chance you could write a grunt job that would allow exactly that kind of usage, and if so what would you need?  I imagine that you wouldn’t need a command line version of QxCompiler, so long as there is an npm installable package?

Cheers
John


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

mitya
In reply to this post by Adrian Haarbach-2
Adrian,

Sounds pretty cool! Unfortunately there's one missing link here -
QxCompiler is not a Grunt task yet.

BTW, is Grunt capable of running two or more background tasks
simultaneously? eg. QxCompiler job + web server
Or do we need to launch them in separate Grunt instances?

Dimitri


В Пн, 22/02/2016 в 18:38 +0100, Adrian Haarbach пишет:

> Concerning the webserver, I am using Grunt and the grunt-http-server
> plugin, which is based on node.js and much faster than python's
> SimpleHttpServer in serving files.
> Also, it allows to specify a proxy where it redirects all requests it
> cannot resolve locally (e.g requests to tomcat). Really useful when
> developing the web part of an application while the backend runs
> somewhere remotely.
>
> qooxdoo already comes with a package.json and Gruntfile.js by default
> now, I just edited them as below to make the webserver work:
>
> package.json:
> {
>   "name": "project",
>   "version": "0.1.0",
>   "repository": {},
>   "devDependencies": {
>     "grunt": "~0.4.2",
>     "grunt-http-server": "^1.13.0"
>   }
>   "license": "Apache-2.0"
> }
>
>
> Gruntfile.js:
> module.exports = function(grunt) {
>   grunt.initConfig({   
>       'http-server': {
>    
>           'dev': {
>    
>               // the server root directory 
>               root: ".",
>    
>               // the server port, can also be written as a function,
> e.g. 
>               // port: function() { return 8282; } 
>               port: 9999,
>    
>               // the host ip address 
>               // If specified to, for example, "127.0.0.1" the server
> will only be available on that ip. 
>               // Specify "0.0.0.0" to be available everywhere 
>               host: "127.0.0.1",
>    
>               // server default file extension 
>               ext: "html",
>    
>               // run in parallel with other tasks 
>               runInBackground: false,
>    
>               // Proxies all requests which can't be resolved locally
> to the given url 
>               // Note this this will disable 'showDir' 
>               proxy: "http://mybackendserver.com",
>           } 
>       }
>   });
>   // // 3. Where we tell Grunt we plan to use this plug-in.
>   grunt.loadNpmTasks('grunt-http-server');
>   // // 4. Where we tell Grunt what to do when we type "grunt" into
> the terminal.
>   grunt.registerTask('default', ['http-server:dev']);
> };
>
> Then to install all dependencies and run, just do:
> npm install -g grunt-cli
> npm install   //installs dependencies listed in package.json into
> node_modules folder
> grunt //runs default http-server:dev job
>
>
> The recompiler and reloader for dev jobs and additionally
> concatenator and uglifiers/minifiers for dist jobs can also be added
> as simple grunt tasks. There are lots of plugins for these tasks.
>
> Looking forward to ditch ./generate.py in favor of a simple and
> faster grunt job!
>
> Adrian
>
>
> 2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
> > Feature request: background recompiler + web server + reloader
> >
> > In qooxdoo development, it's common practice to use a micro HTTP
> > server to run applications, eg. python -m SimpleHTTPServer,
> > generate.py source-server, editor/IDE embedded etc. This is because
> > of limitations of file:/// addressing scheme and CORS/XHR issues
> > that it has.
> > QxCompiler is going to introduce another background process for
> > live code transpiling. Why not combining these two, so that the
> > developer doesn't have to launch two separate processes?
> > It should be pretty easy to serve static contents from Node. In the
> > future, automatic application reloading could be implemented,
> > something that is available now with generate.py watch + source-
> > server-reload jobs.
> >
> > Dimitri
> >
> > > Hi all
> > >
> > > There is a first release of my QxCompiler that adds ES6 to
> > > Qooxdoo applications and replaces the generate.py toolchain with
> > > a faster, 100% Javascript tool that is easily extensible.
> > >
> > > You can find the first release at GitHub here: https://github.com
> > > /johnspackman/qxcompiler
> > >
> > > It’s an alpha release, but something that’s been in development
> > > for a while now and which I’m starting to build into my
> > > production servers.  
> > >
> > > I’m very open to pull requests or collaboration, and keen to see
> > > this become a useful tool for myself as well as others so any
> > > questions etc please ask.
> > >
> > > Regards
> > > John
> > >
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------
> > > ---------------
> > > Site24x7 APM Insight: Get Deep Visibility into Application
> > > Performance
> > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> > > Monitor end-to-end web transactions and take corrective actions
> > > now
> > > Troubleshoot faster and improve end-user experience. Signup Now!
> > > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> > > _______________________________________________
> > > qooxdoo-devel mailing list
> > > [hidden email]
> > > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> > -----------------------------------------------------------------
> > -------------
> > Site24x7 APM Insight: Get Deep Visibility into Application
> > Performance
> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> > Monitor end-to-end web transactions and take corrective actions now
> > Troubleshoot faster and improve end-user experience. Signup Now!
> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> > _______________________________________________
> > qooxdoo-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >
> -------------------------------------------------------------------
> -----------
> Site24x7 APM Insight: Get Deep Visibility into Application
> Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
dev
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

dev
In reply to this post by Adrian Haarbach-2
Adrian,

Fantastic!

This shows how strong and fast a community can be.

Thanks!

Stefan

> Hi Stefan,
>
> here is the pull request: https://github.com/qooxdoo/qooxdoo/pull/175:
>
> Added grunt task source-server-nodejs to the grunt templates.
> Now you have the choice between
> grunt source-server -> python SimpleHttpServer
> grunt source-server-nodejs -> node grunt-http-server
>
> cheers,
> Adrian
>
> 2016-02-22 18:44 GMT+01:00 <[hidden email]>:
>
>> Adrian,
>>
>> This is great. We have thought of using it instead of simple....
>> Now you have done the job. Is it possible to make it universal and into
>> pull requestable files...?
>> We will put it on our todo list to exchange the simple python server...
>>
>> Stefan
>>
>> > Concerning the webserver, I am using Grunt and the grunt-http-server
>> > <https://www.npmjs.com/package/grunt-http-server> plugin, which is
>> based on
>> > node.js and much faster than python's SimpleHttpServer in serving files.
>> > Also, it allows to specify a proxy where it redirects all requests it
>> > cannot resolve locally (e.g requests to tomcat). Really useful when
>> > developing the web part of an application while the backend runs
>> somewhere
>> > remotely.
>> >
>> > qooxdoo already comes with a package.json and Gruntfile.js by default
>> now,
>> > I just edited them as below to make the webserver work:
>> >
>> >
>> > *package.json:*
>> >
>> > {
>> >   "name": "project",
>> >   "version": "0.1.0",
>> >   "repository": {},
>> >   "devDependencies": {
>> >     "grunt": "~0.4.2",
>> >     "grunt-http-server": "^1.13.0"
>> >   }
>> >   "license": "Apache-2.0"
>> > }
>> >
>> >
>> >
>> > *Gruntfile.js:*
>> >
>> > module.exports = function(grunt) {
>> >   grunt.initConfig({
>> >       'http-server': {
>> >
>> >           'dev': {
>> >
>> >               // the server root directory
>> >               root: ".",
>> >
>> >               // the server port, can also be written as a function, e.g.
>> >               // port: function() { return 8282; }
>> >               port: 9999,
>> >
>> >               // the host ip address
>> >               // If specified to, for example, "127.0.0.1" the server
>> will
>> > only be available on that ip.
>> >               // Specify "0.0.0.0" to be available everywhere
>> >               host: "127.0.0.1",
>> >
>> >               // server default file extension
>> >               ext: "html",
>> >
>> >               // run in parallel with other tasks
>> >               runInBackground: false,
>> >
>> >               // Proxies all requests which can't be resolved locally to
>> > the given url
>> >               // Note this this will disable 'showDir'
>> >               proxy: "http://mybackendserver.com",
>> >           }
>> >       }
>> >   });
>> >   // // 3. Where we tell Grunt we plan to use this plug-in.
>> >   grunt.loadNpmTasks('grunt-http-server');
>> >   // // 4. Where we tell Grunt what to do when we type "grunt" into the
>> > terminal.
>> >   grunt.registerTask('default', ['http-server:dev']);
>> > };
>> >
>> >
>> >
>> > *Then to install all dependencies and run, just do:*
>> >
>> > npm install -g grunt-cli
>> > npm install   //installs dependencies listed in package.json into
>> > node_modules folder
>> > grunt //runs default http-server:dev job
>> >
>> >
>> >
>> > The recompiler and reloader for dev jobs and additionally concatenator
>> and
>> > uglifiers/minifiers for dist jobs can also be added as simple grunt
>> tasks.
>> > There are lots of plugins for these tasks.
>> >
>> > Looking forward to ditch ./generate.py in favor of a simple and faster
>> > grunt job!
>> >
>> > Adrian
>> >
>> >
>> > 2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
>> >
>> >> Feature request: background recompiler + web server + reloader
>> >>
>> >> In qooxdoo development, it's common practice to use a micro HTTP server
>> to
>> >> run applications, eg. python -m SimpleHTTPServer, generate.py
>> >> source-server, editor/IDE embedded etc. This is because of limitations
>> of
>> >> file:/// addressing scheme and CORS/XHR issues that it has.
>> >> QxCompiler is going to introduce another background process for live
>> code
>> >> transpiling. Why not combining these two, so that the developer doesn't
>> >> have to launch two separate processes?
>> >> It should be pretty easy to serve static contents from Node. In the
>> >> future, automatic application reloading could be implemented, something
>> >> that is available now with generate.py watch + source-server-reload
>> jobs.
>> >>
>> >> Dimitri
>> >>
>> >> Hi all
>> >>
>> >> There is a first release of my QxCompiler that adds ES6 to Qooxdoo
>> >> applications and replaces the generate.py toolchain with a faster, 100%
>> >> Javascript tool that is easily extensible.
>> >>
>> >> You can find the first release at GitHub here:
>> >> https://github.com/johnspackman/qxcompiler
>> >>
>> >> It’s an alpha release, but something that’s been in development for a
>> >> while now and which I’m starting to build into my production servers.
>> >>
>> >> I’m very open to pull requests or collaboration, and keen to see this
>> >> become a useful tool for myself as well as others so any questions etc
>> >> please ask.
>> >>
>> >> Regards
>> >> John
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------------
>> >> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> >> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> >> Monitor end-to-end web transactions and take corrective actions now
>> >> Troubleshoot faster and improve end-user experience. Signup Now!
>> >> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> >> _______________________________________________
>> >> qooxdoo-devel mailing list
>> >> [hidden email]
>> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> >>
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------------
>> >> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> >> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> >> Monitor end-to-end web transactions and take corrective actions now
>> >> Troubleshoot faster and improve end-user experience. Signup Now!
>> >> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> >> _______________________________________________
>> >> qooxdoo-devel mailing list
>> >> [hidden email]
>> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> >>
>> >>
>>
>>
>> >
>> ------------------------------------------------------------------------------
>> > Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > Monitor end-to-end web transactions and take corrective actions now
>> > Troubleshoot faster and improve end-user experience. Signup Now!
>> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>>
>>
>> > _______________________________________________
>> > qooxdoo-devel mailing list
>> > [hidden email]
>> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>


> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140


> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
dev
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

dev
In reply to this post by mitya
Dimitri,

Independently, of course...

Stefan

> Adrian,
>
> Sounds pretty cool! Unfortunately there's one missing link here -
> QxCompiler is not a Grunt task yet.
>
> BTW, is Grunt capable of running two or more background tasks
> simultaneously? eg. QxCompiler job + web server
> Or do we need to launch them in separate Grunt instances?
>
> Dimitri
>
>
> В Пн, 22/02/2016 в 18:38 +0100, Adrian Haarbach пишет:
>> Concerning the webserver, I am using Grunt and the grunt-http-server
>> plugin, which is based on node.js and much faster than python's
>> SimpleHttpServer in serving files.
>> Also, it allows to specify a proxy where it redirects all requests it
>> cannot resolve locally (e.g requests to tomcat). Really useful when
>> developing the web part of an application while the backend runs
>> somewhere remotely.
>>
>> qooxdoo already comes with a package.json and Gruntfile.js by default
>> now, I just edited them as below to make the webserver work:
>>
>> package.json:
>> {
>>   "name": "project",
>>   "version": "0.1.0",
>>   "repository": {},
>>   "devDependencies": {
>>     "grunt": "~0.4.2",
>>     "grunt-http-server": "^1.13.0"
>>   }
>>   "license": "Apache-2.0"
>> }
>>
>>
>> Gruntfile.js:
>> module.exports = function(grunt) {
>>   grunt.initConfig({   
>>       'http-server': {
>>    
>>           'dev': {
>>    
>>               // the server root directory 
>>               root: ".",
>>    
>>               // the server port, can also be written as a function,
>> e.g. 
>>               // port: function() { return 8282; } 
>>               port: 9999,
>>    
>>               // the host ip address 
>>               // If specified to, for example, "127.0.0.1" the server
>> will only be available on that ip. 
>>               // Specify "0.0.0.0" to be available everywhere 
>>               host: "127.0.0.1",
>>    
>>               // server default file extension 
>>               ext: "html",
>>    
>>               // run in parallel with other tasks 
>>               runInBackground: false,
>>    
>>               // Proxies all requests which can't be resolved locally
>> to the given url 
>>               // Note this this will disable 'showDir' 
>>               proxy: "http://mybackendserver.com",
>>           } 
>>       }
>>   });
>>   // // 3. Where we tell Grunt we plan to use this plug-in.
>>   grunt.loadNpmTasks('grunt-http-server');
>>   // // 4. Where we tell Grunt what to do when we type "grunt" into
>> the terminal.
>>   grunt.registerTask('default', ['http-server:dev']);
>> };
>>
>> Then to install all dependencies and run, just do:
>> npm install -g grunt-cli
>> npm install   //installs dependencies listed in package.json into
>> node_modules folder
>> grunt //runs default http-server:dev job
>>
>>
>> The recompiler and reloader for dev jobs and additionally
>> concatenator and uglifiers/minifiers for dist jobs can also be added
>> as simple grunt tasks. There are lots of plugins for these tasks.
>>
>> Looking forward to ditch ./generate.py in favor of a simple and
>> faster grunt job!
>>
>> Adrian
>>
>>
>> 2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
>> > Feature request: background recompiler + web server + reloader
>> >
>> > In qooxdoo development, it's common practice to use a micro HTTP
>> > server to run applications, eg. python -m SimpleHTTPServer,
>> > generate.py source-server, editor/IDE embedded etc. This is because
>> > of limitations of file:/// addressing scheme and CORS/XHR issues
>> > that it has.
>> > QxCompiler is going to introduce another background process for
>> > live code transpiling. Why not combining these two, so that the
>> > developer doesn't have to launch two separate processes?
>> > It should be pretty easy to serve static contents from Node. In the
>> > future, automatic application reloading could be implemented,
>> > something that is available now with generate.py watch + source-
>> > server-reload jobs.
>> >
>> > Dimitri
>> >
>> > > Hi all
>> > >
>> > > There is a first release of my QxCompiler that adds ES6 to
>> > > Qooxdoo applications and replaces the generate.py toolchain with
>> > > a faster, 100% Javascript tool that is easily extensible.
>> > >
>> > > You can find the first release at GitHub here: https://github.com
>> > > /johnspackman/qxcompiler
>> > >
>> > > It’s an alpha release, but something that’s been in development
>> > > for a while now and which I’m starting to build into my
>> > > production servers.  
>> > >
>> > > I’m very open to pull requests or collaboration, and keen to see
>> > > this become a useful tool for myself as well as others so any
>> > > questions etc please ask.
>> > >
>> > > Regards
>> > > John
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > ---------------------------------------------------------------
>> > > ---------------
>> > > Site24x7 APM Insight: Get Deep Visibility into Application
>> > > Performance
>> > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > > Monitor end-to-end web transactions and take corrective actions
>> > > now
>> > > Troubleshoot faster and improve end-user experience. Signup Now!
>> > > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> > > _______________________________________________
>> > > qooxdoo-devel mailing list
>> > > [hidden email]
>> > > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> > -----------------------------------------------------------------
>> > -------------
>> > Site24x7 APM Insight: Get Deep Visibility into Application
>> > Performance
>> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > Monitor end-to-end web transactions and take corrective actions now
>> > Troubleshoot faster and improve end-user experience. Signup Now!
>> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> > _______________________________________________
>> > qooxdoo-devel mailing list
>> > [hidden email]
>> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> >
>> -------------------------------------------------------------------
>> -----------
>> Site24x7 APM Insight: Get Deep Visibility into Application
>> Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
dev
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

dev
In reply to this post by John Spackman
John,

We really like your approach of the qxcompiler.
I think it is very important to keep it clean and clear-cut as a tool and not complicate it now. There might be many wishes to do this and that. It is good if not moved too fast before knowing what is best for the subproject.

Your ideas behind is really promising. You have done a fantastic job!

We do believe it is time to retire Generate.py and therefore we would like to see qxcompiler taking over all the job of Generate.py.

Speed, performance, simplicity and added functionality is so far better than Generate.py...(what has been implemented so far)
We are using it in a smaller subproject of an admin desktop application now and it is getting better and better. We had to solve some issues.

We will soon come back with more feedback when we see it is grounded...

Stefan

> Hi Adrian
>
> Then to install all dependencies and run, just do:
> npm install -g grunt-cli
> npm install   //installs dependencies listed in package.json into node_modules folder
> grunt //runs default http-server:dev job
>
>  Looking forward to ditch ./generate.py in favor of a simple and faster grunt job!
>
> That sounds really cool - I don’t have any experience with grunt but that’s definitely the right progression; any chance you could write a grunt job that would allow exactly that kind of usage, and if so what would you need?  I imagine that you wouldn’t need a command line version of QxCompiler, so long as there is an npm installable package?
>
> Cheers
> John
>
>


> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140


> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
dev
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

dev
In reply to this post by Adrian Haarbach-2
Adrian,

Please make a doc pull request too... see the doc format etc to make it fit well into the manual...at the right place
If not the doc will lag...never good for new users!

Stefan


> Hi Stefan,
>
> here is the pull request: https://github.com/qooxdoo/qooxdoo/pull/175:
>
> Added grunt task source-server-nodejs to the grunt templates.
> Now you have the choice between
> grunt source-server -> python SimpleHttpServer
> grunt source-server-nodejs -> node grunt-http-server
>
> cheers,
> Adrian
>
> 2016-02-22 18:44 GMT+01:00 <[hidden email]>:
>
>> Adrian,
>>
>> This is great. We have thought of using it instead of simple....
>> Now you have done the job. Is it possible to make it universal and into
>> pull requestable files...?
>> We will put it on our todo list to exchange the simple python server...
>>
>> Stefan
>>
>> > Concerning the webserver, I am using Grunt and the grunt-http-server
>> > <https://www.npmjs.com/package/grunt-http-server> plugin, which is
>> based on
>> > node.js and much faster than python's SimpleHttpServer in serving files.
>> > Also, it allows to specify a proxy where it redirects all requests it
>> > cannot resolve locally (e.g requests to tomcat). Really useful when
>> > developing the web part of an application while the backend runs
>> somewhere
>> > remotely.
>> >
>> > qooxdoo already comes with a package.json and Gruntfile.js by default
>> now,
>> > I just edited them as below to make the webserver work:
>> >
>> >
>> > *package.json:*
>> >
>> > {
>> >   "name": "project",
>> >   "version": "0.1.0",
>> >   "repository": {},
>> >   "devDependencies": {
>> >     "grunt": "~0.4.2",
>> >     "grunt-http-server": "^1.13.0"
>> >   }
>> >   "license": "Apache-2.0"
>> > }
>> >
>> >
>> >
>> > *Gruntfile.js:*
>> >
>> > module.exports = function(grunt) {
>> >   grunt.initConfig({
>> >       'http-server': {
>> >
>> >           'dev': {
>> >
>> >               // the server root directory
>> >               root: ".",
>> >
>> >               // the server port, can also be written as a function, e.g.
>> >               // port: function() { return 8282; }
>> >               port: 9999,
>> >
>> >               // the host ip address
>> >               // If specified to, for example, "127.0.0.1" the server
>> will
>> > only be available on that ip.
>> >               // Specify "0.0.0.0" to be available everywhere
>> >               host: "127.0.0.1",
>> >
>> >               // server default file extension
>> >               ext: "html",
>> >
>> >               // run in parallel with other tasks
>> >               runInBackground: false,
>> >
>> >               // Proxies all requests which can't be resolved locally to
>> > the given url
>> >               // Note this this will disable 'showDir'
>> >               proxy: "http://mybackendserver.com",
>> >           }
>> >       }
>> >   });
>> >   // // 3. Where we tell Grunt we plan to use this plug-in.
>> >   grunt.loadNpmTasks('grunt-http-server');
>> >   // // 4. Where we tell Grunt what to do when we type "grunt" into the
>> > terminal.
>> >   grunt.registerTask('default', ['http-server:dev']);
>> > };
>> >
>> >
>> >
>> > *Then to install all dependencies and run, just do:*
>> >
>> > npm install -g grunt-cli
>> > npm install   //installs dependencies listed in package.json into
>> > node_modules folder
>> > grunt //runs default http-server:dev job
>> >
>> >
>> >
>> > The recompiler and reloader for dev jobs and additionally concatenator
>> and
>> > uglifiers/minifiers for dist jobs can also be added as simple grunt
>> tasks.
>> > There are lots of plugins for these tasks.
>> >
>> > Looking forward to ditch ./generate.py in favor of a simple and faster
>> > grunt job!
>> >
>> > Adrian
>> >
>> >
>> > 2016-02-22 17:58 GMT+01:00 Dimitri <[hidden email]>:
>> >
>> >> Feature request: background recompiler + web server + reloader
>> >>
>> >> In qooxdoo development, it's common practice to use a micro HTTP server
>> to
>> >> run applications, eg. python -m SimpleHTTPServer, generate.py
>> >> source-server, editor/IDE embedded etc. This is because of limitations
>> of
>> >> file:/// addressing scheme and CORS/XHR issues that it has.
>> >> QxCompiler is going to introduce another background process for live
>> code
>> >> transpiling. Why not combining these two, so that the developer doesn't
>> >> have to launch two separate processes?
>> >> It should be pretty easy to serve static contents from Node. In the
>> >> future, automatic application reloading could be implemented, something
>> >> that is available now with generate.py watch + source-server-reload
>> jobs.
>> >>
>> >> Dimitri
>> >>
>> >> Hi all
>> >>
>> >> There is a first release of my QxCompiler that adds ES6 to Qooxdoo
>> >> applications and replaces the generate.py toolchain with a faster, 100%
>> >> Javascript tool that is easily extensible.
>> >>
>> >> You can find the first release at GitHub here:
>> >> https://github.com/johnspackman/qxcompiler
>> >>
>> >> It’s an alpha release, but something that’s been in development for a
>> >> while now and which I’m starting to build into my production servers.
>> >>
>> >> I’m very open to pull requests or collaboration, and keen to see this
>> >> become a useful tool for myself as well as others so any questions etc
>> >> please ask.
>> >>
>> >> Regards
>> >> John
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------------
>> >> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> >> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> >> Monitor end-to-end web transactions and take corrective actions now
>> >> Troubleshoot faster and improve end-user experience. Signup Now!
>> >> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> >> _______________________________________________
>> >> qooxdoo-devel mailing list
>> >> [hidden email]
>> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> >>
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------------
>> >> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> >> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> >> Monitor end-to-end web transactions and take corrective actions now
>> >> Troubleshoot faster and improve end-user experience. Signup Now!
>> >> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> >> _______________________________________________
>> >> qooxdoo-devel mailing list
>> >> [hidden email]
>> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>> >>
>> >>
>>
>>
>> >
>> ------------------------------------------------------------------------------
>> > Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> > Monitor end-to-end web transactions and take corrective actions now
>> > Troubleshoot faster and improve end-user experience. Signup Now!
>> > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>>
>>
>> > _______________________________________________
>> > qooxdoo-devel mailing list
>> > [hidden email]
>> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Site24x7 APM Insight: Get Deep Visibility into Application Performance
>> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>> Monitor end-to-end web transactions and take corrective actions now
>> Troubleshoot faster and improve end-user experience. Signup Now!
>> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>


> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140


> _______________________________________________
> qooxdoo-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

John Spackman
In reply to this post by mitya
This should be straightforward once the continuous compiler process is done – I will implement that as an API too, so integrating with an HTTP server implementation would be trivial and could be done as a separate contrib or PR.  I’ve been using https://www.npmjs.com/package/http-server and find it fast and functional; a brief look at the code shows that it’s pretty lightweight

John

From: Dimitri <[hidden email]>
Reply-To: qooxdoo Development <[hidden email]>
Date: Monday, 22 February 2016 at 16:58
To: <[hidden email]>
Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster compilation, and 100% Javascript API to building applications

Feature request: background recompiler + web server + reloader

In qooxdoo development, it's common practice to use a micro HTTP server to run applications, eg. python -m SimpleHTTPServer, generate.py source-server, editor/IDE embedded etc. This is because of limitations of file:/// addressing scheme and CORS/XHR issues that it has.
QxCompiler is going to introduce another background process for live code transpiling. Why not combining these two, so that the developer doesn't have to launch two separate processes?
It should be pretty easy to serve static contents from Node. In the future, automatic application reloading could be implemented, something that is available now with generate.py watch + source-server-reload jobs.

Dimitri


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
1234