HI Dimitri
Ready and waiting ;)
Re 1 testdata/qxt: fixed now, but what you did is fine (my version just has a
couple of irrelevant test/demo tweaks)
Re 2 build process, messages: fixed
Re 2 build process, too many open files: ah – OK I can throttle that, I just
saw that on my mac ulimit is unlimited (!)
Re 3 icon resource not found: when you copied the source directory into
testdata/qxt did you copy the resource directory also? I don’t understand this
because it works for me :( You’re right that it should be looking in the
resource/ folder for resources, and that’s what mine’s doing here. I’ve just
done a fresh checkout from the repo and tried it OK, so please can you try
pulling, deleting the build-output directory and try again?
Re 3 all resources being copied: fixed (this should fix your ulimit issue too)
Re 4 UploadMgr: yes that’s exactly how to add a contrib. I’ve fixed the
problem in UploadMgr so that it is not strict mode compatible and added it to
the qxt app as a demo.
Re 5 this.self() not working: fixed
Re 6 environment settings: yes, I’ve added a property to qxcompiler.Maker that
is a map you can set; test/compile-app-demo.js now looks like 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")
});
maker.setEnvironment({
"qxt.customEnvironment": "this is custom (source target)"
});
Re 7: Locales and translation: Locales are supported but translations not yet;
it should be straightforward though, so I’ll take a look at translations maybe
tonight, probably tomorrow
Re 8: Large build-target output: the output isn’t compressed/minified yet, but
I’ll be adding that in “real soon now”; I’m planning on using UglifyJS to do
this, my quick test so far shows that the size of the qxt app is reduced from
3.9Mb to 1.1Mb, so not as good yet as generate.py but in the general area. I
think the remaining reduction in size will come by dead code elimination
because the superfluous qx.debug code is not removed from the Build Target yet
Well I’m pleased with that for a morning’s work :) There’s a bit more to do
that I’ll get onto tonight/tomorrow but it should be enough to get you going on
the next step. Don’t forget to checkout the qooxdoo repo as well as the main
QxCompiler one.
Cheers
John
From: Dimitri <mi...@cargosoft.ru>
Reply-To: qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
Date: Monday, 15 February 2016 at 03:28
To: qooxdoo Development <qooxdoo-devel@lists.sourceforge.net>
Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster compilation, and
100% Javascript API to building applications
Hi John! Ready for another dozen of questions and bug reports? ;)
1. As for testdata/qxt directory - yup, it is indeed present, but I don't see
"source" subdirectory, where I would expect the actual application code to
reside. So I just ran "create-application.py -n qxt" in another location and
copied the generated "source" subdirectory to testdata/qxt. Is it how it is
supposed to work?
2. The build process spits a lot of trace messages like this:
Function enter: anonymous
Function exit: anonymous
SourceTarget completes successfully, but BuildTarget fails with the following:
2016-02-15 04:10:22.045 [info ] makers Writing target Build Target:
../testdata/qxt/build-output/
events.js:141
throw er; // Unhandled 'error' event
^
Error: EMFILE: too many open files, open
'../testdata/qxt/build-output//resource/qx/icon/Tango/48/actions/go-home.png'
at Error (native)
I had to increase open file descriptors limit (ulimit -n 8192 worked for me).
If this cannot be fixed/optimized, probably it should be reflected in the docs.
3. There seems to be a big mess with resources. Test app works well in its
source variant, but the single-script build fails to load an icon:
GET http://localhost:8282/qxcompiler/testdata/qxt/build-output/qxt/test.png
[HTTP/1.0 404 File not found 2ms]
000472 qx.ui.basic.Image[45-0]: Image could not be loaded: qxt/test.png
boot.js:54698:13
000474 qx.ui.basic.Image[45-0]: Image could not be loaded: qxt/test.png
boot.js:54698:13
000569 ImageLoader: Not recognized format of external image 'qxt/test.png'!
boot.js:54698:13
Shouldn't it look in "resources" subdirectory instead? The subdir is present
and does contain resources; however, it seems to contain *all* the available
qooxdoo+app resources (~3600 files, ~25M). generate.py usually produces a ~150K
subdir containing resources that are actually required.
At the same time, my application was unable to load resources neither in source
nor in build variant. In both cases it tried to (unsuccessfully) look up
resources in that very same "source-output" or "build-output" directory.
4. Our project uses your (excellent :) UploadMgr contrib. I've added the
following to the async.series block:
function(cb) {
maker.addLibrary("/path/to/qooxdoo-contrib/UploadMgr", cb);
},
Is this the right way to integrate a contrib into the project?
Can't yet say whether it worked or not, as I didn't manage to make application
work (see below). I've noticed the following in console:
SyntaxError: in strict mode code, functions may be declared only at top level
or immediately within another function
(source-output/transpiled//com/zenesis/qx/upload/XhrHandler.js:212:19)
(original file line 212, function sendAsMime definition)
5. One of my classes invokes its static method from a constructor. According to
qooxdoo docs, this should be done this way:
this.self(arguments).foo();
The application failed to load because of "this.constructor.self" being
undefined. The following however worked fine:
this.constructor.foo();
This could potentially break applications that access static members from
constructors and/or instance methods. (I'm not sure if constructor is some
special case.)
6. Is there a way to pass qooxdoo environment keys to the app a la config.js?
Much better if the values could be passed via command line. Our build system
produces metadata (version, build number, revision, timestamp) which we are
planning to pass to the app in the form of qx.core.Environment keys.
7. What about locales & translation? For us, it is essential because our app is
already bilingual, and more languages are to come.
8. For our app, "generate.py build" produces a ~900K script, and it takes less
than a second for the app to be up and running.
QxCompiler/BuildTarget produces a huge ~5M single script, and application
startup takes up to 10 seconds (!)
What is the recommended way to produce optimized/minified build that would be
comparable to the original one?
Okay, that's enough for today :) Tomorrow I'll try to figure out the cause of
another failure that prevents our app from starting up. It's something related
to JSON unmarshalling; the data is unmarshalled as auto-generated class
(qx.data.model.prop1"prop2"prop3[123-0]), while it should be an application
class resolved by a marshal delegate. This works fine with generate.py.
Good luck!
Dimitri
Further to this - I've added some docs about the API, but also seen that the
BuildTarget has a bug and doesn't work - it's only a minor issue but I probably
wont have time to fix it until tonight
John
From: "John Spackman" <john.spack...@zenesis.com>
Sent: Sunday, February 14, 2016 9:50 AM
To: "qooxdoo Development" <qooxdoo-devel@lists.sourceforge.net>
Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster compilation, and 100%
Javascript API to building applications
Hi Dimitri
Thanks for checking out so quickly :)
Re: npm and docs: done
Re: qooxdoo submodule and https: fixed
Re: QOOXDOO_PATH: no - that's a generator.py/config.json setting and
config.json files are completely ignored; when using the QxCompiler API, once
you have told it where the Qooxdoo library is you have done the equivalent of
setting QOOXDOO_PATH. Of course, as it's API based you can define variables
etc as suits you best :)
In test/compile-app-demo.js it adds the Qooxdoo library like this:
maker.addLibrary("../qooxdoo/framework", cb);
Just change the path to point to your preferred location for qooxdoo. To make
this a bit clearer, I've just modified the test/compile-app-demo.js to declare
a variable QOOXDOO_PATH
I expect that the command line version will imply have a search path for
libraries and just auto-discover by searching for Manifest.json files.
Re: missing testdata/qxt: something went wrong with your checkout, that
directory is definitely there.
Re: build (and source-hybrid) targets: to control output for Source vs Build vs
Source-Hybrid, the API classes qxcompiler.targets.SourceTarget,
qxcompiler.targets.BuildTarget, and qxcompiler.targets.SourceHybridTarget are
used; test/compile-app-demo.js uses the SourceTarget but you should be able to
switch it easily enough. I say "should" because I realise now that I havn't
tested them for a few weeks now and I should give them the once over ASAP :)
I've got to go out shortly so I'll take a look this evening.
John
From: "Dimitri" <mi...@cargosoft.ru>
Sent: Sunday, February 14, 2016 2:27 AM
To: "qooxdoo Development" <qooxdoo-devel@lists.sourceforge.net>
Subject: Re: [qooxdoo-devel] QxCompiler - add ES6, faster compilation, and 100%
Javascript API to building applications
John, congratulations with the long awaited release! :) qooxdoo guys, do you
think that project like this could at some moment land in qooxdoo and get
official support? What about qooxdoo patches (mostly strict mode compatibility
related, AFAIK) - could they be merged upstream? This would reduce maintainship
costs for those who want to experiment with both QxCompiler and official
toolchain. I didn't yet try QxCompiler with my project - I feel I yet lack some
understanding of how it works. However, I tried to test it with the skeleton
app. Off the top of my head: - one needs to do "npm install" first and to run
test scripts with "node <script>.js". This might be quite obvious for those
experienced with Node, but I guess the docs will nevertheless benefit from
mentioning this; - it's not easy to clone a repo unless you've set up Github
SSH access. This is because of "qooxdoo" submodule pointing to
"g...@github.com:john spackman/qooxdoo.git". Could it be a HTTPS URL instead? -
does QxCompiler honour QOOXDOO_PATH setting? How do I define qooxdoo location
if it is different from the bundled one? - testdata/qxt directory doesn't
contain skeleton app. In order to play with test scripts, one needs to create
the app manually (as "skeleton.Application"?) and copy it to the said location;
- does lib/compiler.jar really belong there? Most importantly, I was unable to
find clear instructions how to produce a single-script minified build (a-la
"generate.py build"). By deafult, QxCompiler produces a bunch of JS files,
which significantly slows down loading and, obviously, is not acceptable for
production. Is it possible at all with the current version (maybe in
combination with classic generator)? I hope these are just minor issues. After
all, you've done a great job :) I wish you good luck and further progress wih
QxCompiler. 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 >
qooxdoo-devel@lists.sourceforge.net >
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
qooxdoo-devel@lists.sourceforge.net
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
qooxdoo-devel@lists.sourceforge.nethttps://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-devel@lists.sourceforge.net
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
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel