mojo facets – so, you have data and browser?
DESCRIPTION
This presentation provides quick overview of current features of my perl server-side faceted data browser available at: http://github.com/dpavlin/MojoFacetsTRANSCRIPT
![Page 1: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/1.jpg)
MojoFacetsMojoFacetsSo, you have data and browser?So, you have data and browser?
Dobrica PavlinušićDobrica Pavlinušić
http://blog.rot13.orghttp://blog.rot13.org
HULK, Knjižnica Filozofskog fakulteta u ZagrebuHULK, Knjižnica Filozofskog fakulteta u Zagrebu
Slobodni Festival 4, Čakovec, 2. srpnja 2010.Slobodni Festival 4, Čakovec, 2. srpnja 2010.
![Page 2: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/2.jpg)
GoalGoal
Create a faceted data browser, using web browser as a client with data stored on
server in perl's memory.
Allow data modification while keeping changes to for recovery or replication.
Modify data and generate reports using simple perl snippets (it's in memory!)
![Page 3: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/3.jpg)
OverviewOverview
● Faceted browsing● MojoFacets
– Input formats– Faceted browsing, editing and plotting– Eval perl code over items or facets
● Google Chrome Development– Chrome Application– Speed Tracer
![Page 4: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/4.jpg)
Facets?Facets?
A faceted classification system allows the assignment of multiple classifications to an
object, enabling the classifications to be ordered in multiple ways, rather than in a single, pre-determined, taxonomic order.
SIMILE Exhibit Widget – in-browser implementation for < 1000 itemshttp://www.simile-widgets.org/
![Page 5: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/5.jpg)
Profile driven developmentProfile driven development
Assume modern browser (fast JavaScript, canvas), but transfer minimum HTML to reduce memory
usage on device (Android) or CPU usage (netbook)
Web browserWeb browser< 100 MB RAM< 100 MB RAM< 1 s response< 1 s response
single-coresingle-core
MojoFacetsMojoFacets~ 1 GB RAM~ 1 GB RAM< 1 s response< 1 s responsemulti-coremulti-core
Network trafficNetwork traffic< 1 MB < 1 MB
![Page 6: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/6.jpg)
http://www.youtube.com/view_play_list?p=ED435109B7ABD426
![Page 7: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/7.jpg)
MojoFacetsMojoFacets
Web-based faceted browser with server-side data in memory for quick response
● Source data– JSON, CSV, html tables ...
● Server– Perl in-memory data with web server– Mojolicious, Devel::NYTProf
● Web application– jQuery UI (reorder columns)
![Page 8: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/8.jpg)
Input formatsInput formats
● JSON – Exhibit format with items● TXT – pipe | delimited, multiline format
– Plants for the Future● CSV – cp1250 encoded● Storable
– Concateneted serialized perl objects– scripts/vmstat.pl – generate output
![Page 9: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/9.jpg)
Server applicationServer application
● Single user faceted browser– No security, run on localhost!
● Record all user actions and optionally replicate them to other MASTER instance
● Limit amount of HTML trasfered to browser– about:memory < 100 Mb usage!– MAX_FACETS
● Edit on double click with changes log● Holds all data in memory as array of hashes● Analyzes data lazily (numeric, unique)
![Page 10: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/10.jpg)
Filter values = facetFilter values = facet
● Subset of all values for a column in dataset● Can be applied across different datasets with
the same column name● Selection of values using regex in browser● Graph counts using canvas (< MAX_FACETS)● Export to text file● Copy/paste to spreadsheet (white ;)● Eval perl code to filter or create agregates
($value, $count, $checked, $out)● Multiple filters are combined and cached
![Page 11: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/11.jpg)
Browsing and editingBrowsing and editing
● Show items as table or list● Graph all values using gnuplot server-side
(and export data as side-effect)● Edit any cell on double click
– Repeatable values delimited by ¶– Create changes which can be applied to
different datasets or new versions● Load code snippets based on visible columns
– $row -> $update # map– $out->{something}++ # collect
![Page 12: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/12.jpg)
DevelopmentDevelopmentusingusingGoogleGoogleChromeChrome
![Page 13: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/13.jpg)
Google Chrome ApplicationGoogle Chrome Application
$ google-chrome --enable-apps
$ cat chrome-app/manifest.json { "name": "Mojo Facets", "version": "1", "icons": { "24": "24.png", "128": "128.png" }, "launch": { "web_url": "http://localhost:3000/" }, "permissions": [], "web_content": { "enabled": true, "origin": "http://localhost" }}
![Page 14: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/14.jpg)
To get application tab...
![Page 15: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/15.jpg)
...load unpacked extension...
![Page 16: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/16.jpg)
...and open new tab
![Page 17: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/17.jpg)
Chrome Speed TracerChrome Speed Tracer
$ google-chrome --enable-extension-timeline-api http://code.google.com/p/speedtracer/
![Page 18: Mojo Facets – so, you have data and browser?](https://reader033.vdocuments.site/reader033/viewer/2022051514/549c0c37ac7959ec2a8b4620/html5/thumbnails/18.jpg)
Find out more!Find out more!
Blog
http://blog.rot13.org/mojofacets
github
http://github.com/dpavlin/MojoFacets
Project updates
https://www.ohloh.net/p/MojoFacets