lucaspickering / gdlk Goto Github PK
View Code? Open in Web Editor NEWGDLK is a web-based puzzle game based on an assembly-like programming language.
Home Page: https://gdlk.lucaspickering.me
License: MIT License
GDLK is a web-based puzzle game based on an assembly-like programming language.
Home Page: https://gdlk.lucaspickering.me
License: MIT License
Instead of relying on GQL's untyped errors, we should use union types to make results, similar to what Rust does. More info
We use a bunch of different number types and some of the conversions are suscepitable to overflow/underflow. Some things to test include:
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.
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.
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.
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.
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.
first.gdlk
first.gdlk
and save themfirst.gdlk
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.
Our OpenID auth workflow doesn't use CSRF tokens
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.
just make this in sql
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.
Once this juniper issue is fixed, we can go back to a stable version of juniper-from-schema.
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.
We could use tracing for logging stuff in the app. This is going to be dependent on juniper support: graphql-rust/juniper#713
We should use a nonce in the OpenID workflow to prevent replay attacks.
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.
If you put a question mark ?
in a user_program name, it causes a 404 on the SPA. Need to check other special chars too
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.