Category Archives: Node.js

fluentReports gets an actual web site.

Hey,  I finally got a few spare minutes and spent those few minutes building a quick and simple web site for fluentReports.   However, I couldn't just do something totally "static" -- I had to do at least one page that was awesome.

The fluentReports web site now has a fully working demo page (with 3 of the sample reports pre-programmed in) that runs fully in your browser.    You can make any changes you want in the editor and it will attempt to run your changes and generate a new report if possible.

I had suspected the fluentReports would run fine in a browser; but I can now totally confirm that it is possible, with no modifications needed.   You just need to use browserify,

Check out the main site and let me know what you think...  http://fluentReports.com

fluentReport v1.0.0 - Released

It has been a couple years since the first version of fluentReports was released.   Over that time the engine has grown and some very complex bugs appeared that were difficult to fix.

I was very proud of the work at that point; but I have finally had the time to fix the complicated remaining issue in fluentReports and I am very proud to call this version 1.0.0.

Sizing issues with headers/footers and/or too long of text being printed are all squashed!   In addition it has a ton of new features like "link", always printing group headers on new pages; "fill" on prints and tons of other little goodies throughout the code base.     In addition the engine now is fully Asynchronous so you can use Async code in your header, footer or detail callbacks and not worry about the report being corrupt.    In addition it is smart enough that it can continue to be used like it was in Synchronous  mode.    No changes to your code.  I have attempted to maintain backwards compatibility as much as possible and only a couple minor breaking changes have occurred (which some of them can even be disabled, if you don't like the new default).   Please see the changelog file for the information on any breaking changes.

I have also created a commands.md file that you can view a outline of ALL the commands and what they do, and their parameters; this should fill in the documentation gap that I never had in place before.

 

 

Announcing a v8-Natives v0.0.1

What are v8-natives, you might ask?    

Well, they are the mostly undocumented javascript commands that control the v8 engine in Google Chrome, Opera and Joyent Node.js.      Some of the commands are %CollectGarbage(), %GetV8Version(), %GetOptimizationStatus() which ties with my other favorite of %OptimizeFunctionOnNextCall()

 

What can I do with them?

You can tell the engine to Optimize a routine, un-optimize a routine, never optimize a routine, ask it about internal data structures of an variable/object, and one of the most important items is ask if a routine is optimizable.

 

Why is this important?

Well, the v8 engine has several compilers built in; the lowest compiler is just a full featured javascript interpreter -- it is fast; but compared to one of the actual compilers it is so slow that molasses moves faster.     Do you want to figure out which of your code can be promoted to the faster compilers?   Do you want to see what code is a bottleneck even though at a glance it actually looks good?

 

So, which of these routines optimizable?

function sum1(a,b) {
try {
var c=a+b;
} catch (err) {
return -1;
}
return (c);
}

function sum2(a,b) {
return sum.call(this, arguments);
}

function sum3(a,b) {  return  sum(arguments);
}

 

Look no further:

Available on isle 15, at the deep discount of totally free; we now have all the tools you need to answer the above questions.    A fully working support library that wraps over 20 of the internal v8 native commands in a simple to use library that will not crash your script no matter if you have the v8 native support turned on or off.  Can be left in your app and deployed; and finally   supports both Node and Browsers.

Simple things like "v8.helpers.testOptimization(sum1);"  would tell you right away if the sum1 can be optimized....   Or v8.collectGarbage() will do a full GC before you run some timings on a performance critical code...   Lots of things to help your inner-performance surface.

You can get it at your local npm repository:  npm install v8-natives or check out the github page @ https://github.com/Nathanaela/v8-Natives

 

 

fluentReports v0.0.6 Release

We are happy to publish the latest version of fluentReports.

Major Features:

This version brings fluentReports back up to working with the latest and current version of pdfKit.   It also maintains backwards compatiblity with the older pdfKit versions.   As I move forward this compatibility maybe removed unless you let me know on the http://github.com/Nathanaela/fluentreports/issues page why you believe I should maintain compatibility.

This not only retains the compatibility with buffer, and write file and now adds the pipe support.     It has not been tested; but I believe fluentReports should work client side as the only code that would be "broken" is the "write to server file" type and you can't use that client side anyways.  If you test it client side and it doesn't work; let me know in the issues.

Minor Bugs Squashed:

  • Count could throw an error in the paged support.
  • Added outputType (supports buffer, pipe, and defaults to file)