This micro library easily converts JSON, Arrays or Objects into CSV strings. It even supports nesting CSV within CSV via Arrays of Objects as properties of Objects in an Array! It’s primary purpose is to prepare data for exporting.
You can install from npm (npm install csv.js), bower (bower install csv), or do it the old fashioned way by downloading it from github. It should appear on microjs.com once the pull request has been accepted.
csv.js supports CommonJS, AMD & script tag loading.
This minor fix release includes an interesting feature, in my opinion. If you have an API that speaks JSON by default, and you transform to other formats, you might’ve had to consider CSV at some point. There’s a ton of libraries that do CSV -> JSON, but not many go the other way.
turtle.io will now automatically do the transformation for you if the request specifies text/csv as the ideal Content-Type via the Accept HTTP header.
The only caveat is this still won’t work for an AJAX request from a Client browser, because the Content-Disposition header (automatically decorated) will not work as you expect. I set up custom routes for CSV export as an easy way to deal with this issue.
turtle.io
“The Perfect Drug” video, directed by Mark Romanek, premiered 16 years ago today. The song is from the soundtrack to David Lynch’s Lost Highway. The album was produced by Trent Reznor.
RuRoC Shadow helmet on Flickr.
RuRoC Shadow
Can’t wait for winter.
I noticed this company last night, and decided I’d use a coupon to try a small server for 2 months. So far, it seems pretty good. The SSD speed isn’t equal to Joyent, but I assume they’re going after different sectors, and I have no problem with that because it’s 1/4th the price for equal resources.
I’m going to move my sites to my new server this weekend, and hope for the best.
This minor fix version is really a misnomer to introduce an API change, and the DataGrid!
DataGrids are pretty common for representing data in a (pseudo) tabular form, and sometimes it’s what you need to stick in a GUI instead of a stylish / custom DataList. So, abaaso 3.7.5 introduces the grid() factory, which accepts a few parameters to keep things simple.
In reality, it’s simply a composite of a few things that are well tested. The more advanced types of DataGrids that you might expect from ExtJS are absent. I’m a “roll your own” kind of dev, and following the core paradigm of abaaso, it provides “just enough” without bloating the code. If you want an infinite scroll / buffer DataGrid, it’s easy to implement, but it’s not provided out of the box.
abaaso
p.s., 3.7.6 features a minor fix to the teardown() method
This minor version features two big changes!
First, proxy() now supports streaming both directions, with a new boolean parameter. Streaming the request & response bypasses the in-ram cache, so you lose some functionality, but the obvious gain is you’re not adding latency to the communication with the extra ‘hop’. The less obvious loss is path rewrites on textual data, like JSON API responses, or HTML.
The second big change is how logs are written to disk; it’s now a queue that’s flushed based on the logs.flush configuration parameter, which defaults to 1 second. This delayed flush minimizes file descriptors that’d be wasted on trying to write to disk on every request (e.g. 10k requests + 10k log writes + 10k responses = wasteful!). Currently, the write mechanism is an async append, but I could easily change this to writeStream if there’s any push for it.
turtle.io
Last night I switched the minification process from uglifyjs to closure compiler, because closure compiler will generate a usable source map. It’s not a drastic change, but it is quite useful and deserved it’s own minor fix version.
The build process now requires `closure-compiler` to be in your PATH, because it’s not executed as as grunt task, but as a shell task called from grunt. I’ll make it better this week, with verification, etc..
abaaso
This minor release features an API change, and a new class; deferreds! The old `$.defer()` has been renamed to `$.delay()`, and now `$.defer()` is a Deferred factory. The deferred prototype methods align pretty closely with jQuery’s for convenience, making it mostly interchangable.
A couple of fixes are present for Promises:
- Resolving the chain from the `end` no longer results in uncaught Errors being thrown
- Resolving a fork (Promise that returns a Promise) will resolve chained Promises
This minor fix release takes care of the 1-n bug for filtering many datalists representing 1 datastore. I forgot to pass a boolean.
abaaso
untitled on Flickr.
Jen got a new bike helmet today.
I turned off & deleted my Joyent server after a little over 5 months of usage. That cloud service, is by far the best I’ve worked with. The control panel isn’t equal to AWS, but who cares, it’s much faster!
So, why did I delete the server? I’m not using it for anything. If I had a purpose/project, that was profitable, I’d probably have a few “big” instances going right now. When I do have another project to launch, I’ll be going to Joyent for my server(s).
I’m moving the website to GitHub, so the API & Tutorial links will point at the wiki documentation. This is less impressive visually, but makes sense from a “single person managing the project” perspective.
It’d be kinda lame, but it’d be kinda fun. I should have a badge/achievement for this stat:
4,128 Total
Apr 27 2012 - Apr 27 2013
Year of Contributions
untitled on Flickr.
Page 1 of 24