Giter Site home page Giter Site logo

tracyhenry / kyrix Goto Github PK

View Code? Open in Web Editor NEW
143.0 143.0 26.0 53.03 MB

Interactive details-on-demand data visualizations at scale

License: MIT License

JavaScript 54.78% HTML 1.28% Java 35.28% CSS 0.27% Shell 6.44% PLpgSQL 1.63% C++ 0.25% Python 0.07%
d3js dataviz declarative-language interactive-visualizations postgresql spatial-index visualization-grammar visualization-tools

kyrix's People

Contributors

abhishek-bassan avatar asah avatar brettgurman-real avatar dependabot[bot] avatar ericazhou7 avatar houxinli avatar mschoema avatar peterg17 avatar scarlettz98 avatar tracyhenry avatar xiaoyu4321 avatar yediwang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kyrix's Issues

Issue with using port 3306

Error messages:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project tile-server: An exception occured while executing the Java class. Address already in use -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project tile-server: An exception occured while executing the Java class. Address already in use

easy debug

  1. developer shouldn't need to delete project definition before modifying the spec

  2. after writing new spec, backend should automatically detect the changes and re-precompute accordingly

installation/startup error if project table not created first

Ubuntu 16.04, Postgres 10.0, NodeJS v8.12.0, Maven (mvn) 3.3.9, Java 8,

The setup instructions read: "Go to tile-server/. Run mvn compile to build the server. Run mvn exec:java -Dexec.mainClass="main.Main" to start the server. After the server starts, it will prompt that it did not find the spec of the app and is waiting for it..." and then "cd compiler/examples/nba; node nba.js"

This results in "kyrix@kyrix ERROR: relation "project" does not exist at character 21" (seen in postgres logs). The bad SQL: select content from project where name = 'nba'

Perhaps the best workaround is to manually create the table using this idempotent SQL:
CREATE TABLE IF NOT EXISTS project (name VARCHAR(255), content TEXT, dirty int, CONSTRAINT PK_project PRIMARY KEY (name));

pushing predicate generation into backend (important security issue)

right now the predicate functions are run in the client. The resulting predicates are then passed to the backend. This will invite SQL injections...

Tentative solution is to put the generation back into the backend. Also, it's necessary to write a parser to ensure the predicates generated are in "good form"

dbox 'fails' when panning is fast

right now front-end uses pendingBoxRequest to disable concurrent dbox requests.

However, this ignores all subsequent requests while a dbox request is still being processed, and will result in incomplete visualizations when the user already pans outside the returned new box.

canvas request can be removed

canvas request is used by the frontend to fetch canvas info and static layer data. However, we can probably assume these static info can fit in frontend's memory, and completely eliminate this kind of requests, which sometimes cause laggy animation.

write an indexer that uses built-in postgres gist index

It is confirmed now that postgres has built-in geometry types and GiST indexes. So we should write a new indexer that uses it, test if it works fine, and then possibly get rid of PostGIS, which is a pain to install.

https://www.postgresql.org/docs/9.4/functions-geometry.html
https://www.citusdata.com/blog/2017/10/17/tour-of-postgres-index-types/
https://medium.com/@Alibaba_Cloud/principles-and-applications-of-the-index-types-supported-by-postgresql-481f59bab67d

make backend stateless

The backend is now stateful because it memorizes the user's history of positions.

This history should be instead maintained by the client, to make the backend stateless and parallelizable

zoom/panning "state" not stored in URL (e.g. #z=<level>&x=XXX&y=YYY)

Web users expect to be able to reload a page and go back to the current view.
In particular, this means that kyrix views are not shareable to other users and can't be bookmarked.

(to demonstrate this, pick any example, zoom/pan and then hit reload in the browser or try to copy/paste the URL into a new tab/window)

nashorn-common-js breaks when requiring d3

This is because nashorn-common-js does not implement native node modules (e.g. http) while d3-request requires http.

The current workaround is to comment out the lines requiring d3-request in node_modules/d3/build/d3-node.js

newScale function for zoom

Letting the zoom specify a function to calculate the scale of the destination canvas.

This is useful for creating ticketmaster-like geometric_semantic_zooms, where the zoomed-in canvas need to be scaled differently for different zooming entities.

And, an initial scale is needed for the initial canvas.

one-command script to load new datasource

so users can quickly move beyond the NBA example.
do this for both docker-compose and kubernetes
follow-on: create instructions on how to format the data (if not already present)
follow-on: create instructions on how to scale up for very large datasets that must be loaded in parallel

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.