Giter VIP home page Giter VIP logo

gdlk's People

Contributors

jrmurr avatar lucaspickering avatar stefansu28 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

gdlk's Issues

Add tests surrounding integer conversion/overflow

We use a bunch of different number types and some of the conversions are suscepitable to overflow/underflow. Some things to test include:

  • Program size overflow (can't fit all instructions in a Vec)

Prevent infinite loops on the server

We should prevent people from running an infinite loop that crashes the server. The easy fix is once we add CPU cycle counting, we can just add a hard cap on how many cycles you can run before it kills the program.

Add Composite Score

We want a composite score that can summarize all stats of a user_program. We should push this as the primary metric. It can be a generated column on the user_program_records table.

Add "Run Instantly" button to the IDE

We should have a button in the IDE that executes the entire program without updating the UI step-by-step, so that it can finish instantly. Then it'll just update the UI at the end.

Rename `ResponseError` to `ApiError`

Actix already has a ResponseError type. It might cause less confusion if we rename ours to ApiError. Make sure to update any comments that reference it too.

IDE doesn't compile on first load

When you first load the IDE, if there's source code in the editor, it doesn't properly compile it and display results. You have to make an edit first before it will do so.

It also might be that it is compiling, but that occurs after the render and it doesn't properly trigger a re-render.

Editing a solution in one tab and copying it in another creates weird behavior

  1. Create first.gdlk
  2. Open it in the editor
  3. Open a second tab to the program spec page (where the solution table is)
  4. In the first tab, make some changes to first.gdlk and save them
  5. In the second tab, make a copy of first.gdlk
  6. Open the copy, and it will be empty instead of having the contents of first.gdlk

This is because the second tab loaded the source code of first.gdlk before it was saved, and it never got refreshed. We could fix this by adding an explicit copy mutation to the API.

Use pg generated columns for `slug` columns

All the slug columns that we have are just generated from the name column at insert. We should use pg generated columns to clean that up. We'll need to make sure there's still an index on the new col, so that filtering can be turbo fast.

Parallelize OIDC Provider Init

Right now we init OIDC providers in series it'd be nice to parallize this before/shortly after we add more providers to prevent startup time from getting too long.

Use strum crate for DB enums

We have some enums that we map to DB fields, which have string literals associated with each type. We could clean this up/automate it with the strum crate. I want to wait until their next release though, because that updates it to Rust 2018 which will make it a bit nicer to user.

DB Restore

We want to restore the prod DB to development so we can get new programs etc. in development easily. We'll need to sanitize the DB though so that we don't leak any data. For now, we can just delete the user table and everything that references those rows. Maybe in the future we'll come up with a better solution so we can seed some user programs or something.

Run `down` migrations during CI

The CI should run all down migrations to make sure they all work. This will be easy once this issue is closed: diesel-rs/diesel#2095

The functionality is implemented but they haven't done a diesel_cli release yet, so once that's done we can use it.

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.